5

所以,我在我的解决方案上启用了包还原 - Install-Package 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 文件中定义我的包源吗?

4

3 回答 3

2

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

NuGet 包管理器 1.8 中添加了在 UI 中给予同意的选项。它是工具->选项->包管理器->常规下的第三项:“包还原:允许 NuGet 在构建期间下载丢失的包”。

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

于 2012-08-08T17:07:06.853 回答
2

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

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

感谢所有的建议!

于 2012-08-10T17:48:00.173 回答
1

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

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

于 2012-08-10T06:16:47.880 回答