TFS NuGet还原包不起作用 - Microsoft.webapplication.targets

时间:2013-09-12 13:51:25

标签: tfs nuget nuget-package-restore

我最近开始使用TFS为我们的软件套件实现自动构建。我试图在构建服务器上尽可能少地安装,并且希望避免在第三方库中检入我们的源存储库。

我们的一个项目未能通过缺少依赖项进行构建:

<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />

这并不奇怪,因为我没有在构建服务器上安装Visual Studio(或Team Explorer等)。为了解决这个问题,我试图使用NuGet自动包恢复来提供适当的库(MSBuild.Microsoft.VisualStudio.Web.targets)。我已经在这里和其他地方阅读了大量的帖子,但未能使其正常工作。基本上,我:

  1. 在构建服务器上设置环境变量:EnableNuGetPackageRestore = true
  2. 按照:http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages
  3. 上的说明操作
  4. 将SolutionDir.nuget中的所有文件添加到TFS存储库。
  5. 将packages文件夹和respositories.config添加到TFS存储库。
  6. 已验证nuget.targets是从违规项目中引用的。
  7. 已确认在违规项目中将“RestorePackages”设置为true。
  8. 搁置所有这些物品,并用适当的货架排队私人建筑物。
  9. 构建运行,但永远不会下载nuget包。除此之外,我没有在构建日志文件中看到任何“RestoreCommand”(或nuget.targets中的其他项)的任何日志条目。它就像nuget.targets完全被忽略了。我希望我一直在看这个太久而且错过了一些简单的步骤。

    编辑:我应该提到解决方案在本地计算机上构建良好。我已更新项目引用以引用NuGet中的库。如果我删除所有本地软件包,它会下载它们并正确构建。

1 个答案:

答案 0 :(得分:1)

我知道这是一个老问题,但这就是我如何运作的。

我按照这里的说明操作,所以我不必将包文件夹添加到TFS: http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages

然后,我必须使用此链接http://docs.nuget.org/docs/reference/package-restore-with-team-build中提到的简单构建文件,它只是事先触发包恢复。

所有我必须从构建文件更改的是我的解决方案文件的路径和我的nuget.exe不同。

然后我将TFS配置为使用build.proj文件而不是解决方案。

请注意我也升级到了nuget 2.7,因此我不必包含.targets文件。