3

这是我昨天提出的问题的后续:NuGet package restore in builds and Visual Studio

我已经从我的 VS2013 解决方案中删除了“.nuget”解决方案文件夹,但是我的构建管道中的“Visual Studio 构建”任务现在失败了,每个项目都有一个错误:

[错误]xxxxx.csproj(214,5):错误:此项目引用了此计算机上缺少的 NuGet 包。启用 NuGet 包还原以下载它们。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 c:\Temp\VSTS Agent_work\10\s\xxxxx\.nuget\NuGet.targets。

我已经尝试检查 VS 构建任务中的“恢复 NuGet 包”选项,但这并没有什么区别。复选框表示此选项已弃用,并使用“Nuget 工具安装程序”任务 - 我也尝试过,但它仍然没有帮助。

我什至在我的构建管道中添加了一个“Nuget (command=restore)”任务。它的输出显示它已将 Nuget 包恢复到解决方案的 \packages 文件夹中,但仍然没有任何乐趣。

我检查了 .csproj 文件中的相对包路径,它们正确地指向了由上述“Nuget 恢复”任务恢复的包文件夹。

我是否遗漏了某些东西,或者是将“.nuget”解决方案文件夹放回原处的唯一解决方法?

4

1 回答 1

6

找到了答案:我需要从我的每个 .csproj 文件中删除包还​​原的“旧方式”的残余,即:

<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
  <PropertyGroup>
    <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
  </PropertyGroup>
  <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>

根据这个 SO 答案:https ://stackoverflow.com/a/23852183/981831

于 2019-09-06T14:10:37.883 回答