我正在尝试将.NET核心库项目从VS2015迁移到VS2017,这将导致project.json文件转换为.csproj文件。 现在,该项目引用了我创建的两个库,以及何时将构建推送到VSTS包管理器。
在Visual Studio中使用项目时,我更喜欢将引用的项目添加到我的解决方案中,因此我可以在同一解决方案中处理代码。同时我希望该项目能够引用这些软件包,因此在构建VSTS时,它将代替软件包。
使用project.json文件,这工作正常,nuget恢复(我使用nuget恢复,因为dotnet恢复无法验证VSTS packagemanager)只会恢复包,我可以构建它。
现在使用.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,这是不最佳
答案 0 :(得分:0)
您正在使用项目引用(ProjectReference)而不是包引用。您需要从VSTS包源安装相应的包。
示例项目文件代码(项目和包引用):
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup Label="Globals">
<SccProjectName>SAK</SccProjectName>
<SccProvider>SAK</SccProvider>
<SccAuxPath>SAK</SccAuxPath>
<SccLocalPath>SAK</SccLocalPath>
</PropertyGroup>
<PropertyGroup>
<TargetFramework>netcoreapp1.1</TargetFramework>
</PropertyGroup>
<PropertyGroup>
<PackageTargetFallback>$(PackageTargetFallback);portable-net45+win8+wp8+wpa81;</PackageTargetFallback>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="ClassLibraryCore2017" Version="1.0.0" /><!--package reference-->
<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.0.0" />
<PackageReference Include="Microsoft.AspNetCore" Version="1.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.2" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.1.1" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.1" />
<PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="1.1.0" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ClassLibrary1\ClassLibrary1.csproj" /><!--project reference-->
</ItemGroup>
</Project>
您可以参考以下步骤来达到您的要求:
这个命令
nuget sources add -name [feed name] -source [your vsts feed] -username test -password [personal access token] -StorePasswordInClearText
--configfile ..\Config\NuGet.Config