【发布时间】:2017-09-16 22:51:11
【问题描述】:
我正在尝试将 .NET 核心库项目从 VS2015 迁移到 VS2017,这将导致 project.json 文件转换为 .csproj 文件。 现在,该项目正在引用我创建的两个库,并且在将构建推送到 VSTS 包管理器时。
在 Visual Studio 中处理项目时,我更喜欢将要引用的项目添加到我的解决方案中,这样我就可以在同一个解决方案中处理代码。同时我希望项目引用包,所以当在 VSTS 上构建时,它会获取包。
使用 project.json 文件,这工作正常,nuget restore(我正在使用 nuget restore,因为 dotnet restore 无法对 VSTS 包管理器进行身份验证)只会恢复包,我可以构建它。
现在有了 .csproj 文件,参考项目是这样添加的:
<ItemGroup">
<ProjectReference Include="myliba\src\myliba.csproj" />
<ProjectReference Include="mylibb\src\mylibb.csproj" />
</ItemGroup>
这将使“nuget restore”也尝试恢复这些项目的包。但由于这些项目位于另一个存储库中,因此它们不会(也不应该)从存储库中下载,并且“nuget restore”失败出现错误:
Errors in C:\a\1\s\src\mylib\mylib.csproj
Unable to resolve 'C:\a\1\myliba\src\myliba' for '.NETCoreApp,Version=v1.1'.
Unable to resolve 'C:\a\1\mylibb\src\mylibb.csproj' for '.NETCoreApp,Version=v1.1'.
如何让 nuget 忽略这些 ProjectReferences,并让它从 VSTS 包管理器获取库?
一种解决方案:
如果我在 VSTS 上定义一个名为“BuildSystem”的变量并将其设置为 VSTS,那么我可以在我的 .csproj 中检查它
<ItemGroup Condition=" '$(BuildSystem))' == '' ">
<ProjectReference Include="myliba\src\myliba.csproj" />
<ProjectReference Include="mylibb\src\mylibb.csproj" />
</ItemGroup>
虽然这意味着我必须手动调整我的所有 .csproj,这不是最佳
【问题讨论】:
标签: visual-studio-2017 azure-pipelines nuget-package-restore