2014-05-13 71 views
2

今天我遇到了一个问题,花了我一点时间才弄清楚,因为我对TFS中的源代码控制项目中的Enable NuGet Package Restore工作方式有明显的误解。因此,首先让我解释一下我上周花了多少钱解决问题。Visual Studio通过TFS修复了Nuget包

在我们的TFS服务器上,我为持续集成创建了一个构建定义。当源代码签入时,构建服务器开始编译源代码,然后由于无法获取NuGet包而失败。我最初以为这是因为Enable NuGet Package Restore被禁用,所以我在解决方案级别打开它并重新提交我的代码。构建继续失败。如果没有管理员访问构建服务器的虚拟化实例,并且管理员最近陷入困境,那么让我继续前进,并决定在几周内我会处理它,当时我的Sprint和他的Sprint变得更加轻松。启动构建服务器并不是必须的。但是我确实删除了本地映射到TFS中的分支,删除本地目录,重新映射源代码并执行全新获取并重新编译源代码,没有任何问题。 NuGet包下载得很好。

今天,我们有一个新雇佣加入团队。他从TFS中取出一份新的副本,遇到一些SlowCheetahfor transforming our WPF App Configs)NuGet失败。今天我们花了很多时间试图弄清楚为什么他不能正确地拖拽文件。过了一会儿,我右键点击他的解决方案,注意到Enable NuGet package Restore选项可用。即使在我的解决方案中,我已经启用了它,但他的解决方案没有成立。我启用它,立即编译他的解决方案没有错误。

现在回到主要问题,如果我启用解决方案来恢复软件包,为什么我必须在另一个盒子上重新启用它?我的设想是,通过确保在所有框的设置中启用Allow NuGet to download missing packages during build选项,Visual Studio会自动下载从我的TFS源代码中缺失的NuGet包。这让我感到困惑,如果NuGet在存储在TFS中的项目中使用包时如何工作(并恢复),我将非常感激。我们没有在我们的TFS签入中包含任何软件包,因为我通过该功能自动为该项目工作。

最后,我想知道这是为什么我的构建服务器无法运行我的构建定义。我遇到了NuGet错误,我不知道如何告诉构建定义来下载NuGet包。这是我需要做的修改构建模板,添加一个序列来下载NuGet包之前运行MSBuild什么的?

在此先感谢。

编辑1我还想提一下,NuGet .targets文件也包含在TFS分支中。

回答

1

这就是所谓的软件包恢复许可,对于IDE,您需要为每个用户执行此操作。有一种方法可以覆盖每台机器,但每个用户都更容易。

对于服务器可以使用EnableNuGetPackageRestore环境变量中的“真”

值查询更多:http://docs.nuget.org/docs/reference/package-restore

+0

谢谢,我会做EnableNuGetPackageRestore一些研究,看看能否解决和报告背部。 –

相关问题