Azure DevOps 构建管道中的 NuGet 包还原

NuGet package restore in Azure DevOps build pipeline

这是我昨天提出的问题的后续:

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

[error]xxxxx.csproj(214,5): Error : 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 c:\Temp\VSTS Agent_work\s\xxxxx\.nuget\NuGet.targets.

我试过检查 VS 构建任务中的 "Restore NuGet packages" 选项,但没有任何区别。复选框表示此选项已弃用,并使用 "Nuget tool installer" 任务 - 我也尝试过但仍然没有帮助。

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

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

我是否遗漏了什么或者是将“.nuget”解决方案文件夹放回原处的唯一修复方法?

找到答案:我需要从我的每个 .csproj 文件中删除包还​​原 "old way" 的残余,即:

<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 答案: