.net 核心 (csproj) global.json 'projects' 等效
.net core (csproj) global.json 'projects' equivalent
使用 .net 核心 (project.json) 我曾经通过将源代码的路径添加到 global.json 中的 projects
字段来在 nuget 包和源代码之间切换。在我这样做之后,它将添加它可以在该路径中找到的所有项目,这些项目可以替换我引用的 nuget 包。
我经常使用此功能,因为我有自己使用的 nuget 包,但我想在发布之前测试其他项目中的更改。但是一旦我切换到 Sdk 1.0.0/VS 2017/csproj .net 核心,该功能似乎就消失了。
替代方法是手动添加每个项目,手动切换引用(因为它们被分解为项目、nuget 和 sdk 引用),然后再切换回来。
任何想法或建议都会很棒。
更新:
听起来 csproj 中没有等效项(正如预期的那样),但目前有 msbuild 解决方法(从最初的 VS 2017/.NET Core SDK 1.0.0 版本开始)
是的,我也已经习惯了这个功能并围绕它构建了我的工作流程。我仍在寻找解决方案,但我目前正在研究在 csproj 文件中使用条件逻辑的想法。由于现在是 msbuild,您可以这样做:
<Choose>
<When Condition="Exists('..\..\..\MyProject')">
<ItemGroup>
<ProjectReference Include="..\..\..\MyProject\src\MyProject\MyProject.csproj" />
</ItemGroup>
</When>
<Otherwise>
<ItemGroup>
<PackageReference Include="MyProject" Version="1.0.0" />
</ItemGroup>
</Otherwise>
</Choose>
这用一个条件替换了对包的硬引用,如果它可以找到源代码(在本例中是目录)则使用项目引用,如果找不到则使用包引用。
因此默认情况下您将引用该包,但如果您想调试您的项目之一,您可以在条件检查的位置检出它,并将该项目添加到您的解决方案中。
这样您只需要在您想要包含源代码时更改您的解决方案文件(通过添加项目),而不是重新连接所有项目引用。
对于其他有兴趣尝试用 Global.json 进行模拟的人,我现在使用几个 powershell 脚本和一个模仿它的自定义 json 文件解决了这个问题。在这里查看我的答案:
使用 .net 核心 (project.json) 我曾经通过将源代码的路径添加到 global.json 中的 projects
字段来在 nuget 包和源代码之间切换。在我这样做之后,它将添加它可以在该路径中找到的所有项目,这些项目可以替换我引用的 nuget 包。
我经常使用此功能,因为我有自己使用的 nuget 包,但我想在发布之前测试其他项目中的更改。但是一旦我切换到 Sdk 1.0.0/VS 2017/csproj .net 核心,该功能似乎就消失了。
替代方法是手动添加每个项目,手动切换引用(因为它们被分解为项目、nuget 和 sdk 引用),然后再切换回来。
任何想法或建议都会很棒。
更新: 听起来 csproj 中没有等效项(正如预期的那样),但目前有 msbuild 解决方法(从最初的 VS 2017/.NET Core SDK 1.0.0 版本开始)
是的,我也已经习惯了这个功能并围绕它构建了我的工作流程。我仍在寻找解决方案,但我目前正在研究在 csproj 文件中使用条件逻辑的想法。由于现在是 msbuild,您可以这样做:
<Choose>
<When Condition="Exists('..\..\..\MyProject')">
<ItemGroup>
<ProjectReference Include="..\..\..\MyProject\src\MyProject\MyProject.csproj" />
</ItemGroup>
</When>
<Otherwise>
<ItemGroup>
<PackageReference Include="MyProject" Version="1.0.0" />
</ItemGroup>
</Otherwise>
</Choose>
这用一个条件替换了对包的硬引用,如果它可以找到源代码(在本例中是目录)则使用项目引用,如果找不到则使用包引用。
因此默认情况下您将引用该包,但如果您想调试您的项目之一,您可以在条件检查的位置检出它,并将该项目添加到您的解决方案中。
这样您只需要在您想要包含源代码时更改您的解决方案文件(通过添加项目),而不是重新连接所有项目引用。
对于其他有兴趣尝试用 Global.json 进行模拟的人,我现在使用几个 powershell 脚本和一个模仿它的自定义 json 文件解决了这个问题。在这里查看我的答案: