【问题标题】:TFS NuGet Restore Package Not Working - Microsoft.webapplication.targetsTFS NuGet 还原包不工作 - Microsoft.webapplication.targets
【发布时间】:2013-09-12 13:51:25
【问题描述】:

我最近开始使用 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. 将 SolutionDir.nuget 中的所有文件添加到 TFS 存储库。
  4. 将包文件夹和 respositories.config 添加到 TFS 存储库。
  5. 已验证是否从违规项目中引用了 nuget.targets。
  6. 已验证问题项目中的“RestorePackages”设置为 true。
  7. 搁置所有这些项目,并使用适当的搁置组排队进行私人构建。

构建运行,但从未下载 nuget 包。除此之外,我在构建日志文件中看不到任何“RestoreCommand”(或 nuget.targets 中的其他项目)的任何日志条目。就像 nuget.targets 被完全忽略一样。我希望我只是看这个太久了,错过了一些简单的步骤。

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

【问题讨论】:

  • 你是如何设置环境变量的?你确定它不是每个用户,你是否反弹了机器以确保它被应用于所有进程等?

标签: tfs nuget nuget-package-restore


【解决方案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 文件。

【讨论】:

    猜你喜欢
    • 2023-03-04
    • 2015-10-11
    • 2017-12-04
    • 2014-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-11
    • 2012-02-19
    相关资源
    最近更新 更多