【问题标题】:TFS NuGet tricks that I don't already know about?我还不知道的 TFS NuGet 技巧?
【发布时间】:2012-08-05 00:58:55
【问题描述】:

所以,我在我的解决方案上启用了包恢复 - 安装包 NuGetEnablePackageRestore

我已经在 TFS 构建服务器上安装并更新了 NuGet

我在 TFS 构建服务器上创建了环境变量 - http://www.centrolutions.com/blog/post/2012/07/05/NuGet-and-TFS-2010-Automated-Build.aspx

我已删除所有 packages.config 文件,并在每个项目上重新开始。

我已将 .nuget 文件夹路径以及定义的构建代理文件夹添加到构建作业中

我的绞索差不多用完了,打算在黎明时上吊……我有什么遗漏吗?

忘记放 TFS 构建错误

C:\Builds\10.......nuget\nuget.targets (76):默认情况下禁用包还原。要给予同意,请打开 Visual Studio 选项对话框,单击包管理器节点并选中“允许 NuGet 在构建期间下载丢失的包”。您也可以通过将环境变量“EnableNuGetPackageRestore”设置为“true”来表示同意。

C:\Builds\10.......nuget\nuget.targets (76):命令“C:\Builds\10.......nuget\nuget.exe”安装“ C:\Builds\10......\packages.config" -source "" -o "C:\Builds\10......\packages"" 以代码 -1 退出。

为安全起见删除了完整路径。

发现:

我的 TFS 管理员将环境变量设置为 USER 变量!我只是想我会让她告诉我她是如何配置它的,当她这样做时,我意识到这是错误的。

我不再收到包还原错误...哇!但是,我收到“无法找到版本”错误,这让我认为 TFS 框不知道正确的包源。我已经验证可以从 TFS 构建框访问包源,并且我已经在该框上配置了 NuGet 以引用包共享。

是否可以在没有包服务器的情况下执行此操作?我一直在为我的所有本地构建使用文件共享,但我想知道当它到达 TFS 框时规则是否会改变。我需要在 Nuget.config 文件中定义我的包源吗?

【问题讨论】:

  • 有什么问题?任何错误信息?

标签: nuget tfsbuild


【解决方案1】:

从 NuGet 2.0 开始,您需要同意 NuGet 在构建期间下载包(隐私问题)。更多信息在这里:http://blog.nuget.org/20120518/package-restore-and-consent.html

在 UI 中给予同意的选项已在 NuGet 包管理器 1.8 中添加。它是 Tools->Options->Package Manager->General 下的第三项:“Package Restore : Allow NuGet to download missing packages during build”。

或者,您可以通过将 EnableNuGetPackageRestore 环境变量设置为 true 来表示同意。

【讨论】:

  • 感谢您的建议,但正如我在帖子中所说,我已经创建了环境变量。此外,我无法想象我必须在构建服务器上打开每个解决方案并重新启用包还原。构建服务器应该是一个需要最少交互的无头系统。
【解决方案2】:

问题最终是 TFS 管理员为 EnableNuGetPackageRestore 环境变量使用了“用户变量”。我永远不会马上猜到这一点:(。

我又去看了她的配置,发现不对……让她改正,现在可以正常使用了。

感谢所有建议!

【讨论】:

  • 并且必须重新启动 TFS 构建控制器/服务/代理,除非服务器本身已重新启动。
【解决方案3】:

如果您启用了包还原,则可以使用 $(SolutionDir).nuget 文件夹中的 NuGet.targets 文件中的 元素配置包源。

您能否验证这些指向正确的位置,以及该路径是否可以从构建服务器访问?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    • 1970-01-01
    • 2014-06-17
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多