Visual Studio通过TFS恢复Nuget包

本文关键字:Nuget 恢复 TFS Studio 通过 Visual | 更新日期: 2023-09-27 18:03:05

今天我遇到了一个问题,我花了一点时间才弄清楚,因为我明显误解了在TFS中如何在源代码控制的项目中启用NuGet包还原。因此,首先让我解释一下我花了一周左右的时间来解决的问题。

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

然而,今天我们有一个新员工加入了这个团队。他从TFS中取出了一个新的副本,并遇到了一些SlowCheetah(用于转换我们的WPF应用程序配置)NuGet失败。我们今天花了很多时间想弄清楚为什么他的电脑不能正常下载文件。过了一会儿,我右键点击他的解决方案,注意到Enable NuGet package Restore选项可用。即使在我的解决方案中,我启用了它,但他的解决方案没有设置它。我打开了它,他的解决方案立即编译无误。

那么现在回到主要问题,如果我启用解决方案来恢复包,为什么我必须在另一个盒子上重新启用它?我假设通过确保Allow NuGet to download missing packages during build选项在所有盒子的设置中启用,Visual Studio将自动下载我的TFS源代码中缺少的NuGet包。这让我很困惑,当包在TFS中存储的项目中使用时,我希望能弄清楚NuGet应该如何工作(和恢复)。我们没有在TFS签入中包含任何包,因为我认为这个功能应该自动为项目工作。

最后,我想知道这是否是我的构建服务器无法运行我的构建定义的原因。我得到NuGet错误,我不知道如何告诉构建定义下载NuGet包。这是我需要通过修改构建模板,在运行MSBuild或其他东西之前添加下载NuGet包的顺序来做的事情吗?

提前感谢。

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

Visual Studio通过TFS恢复Nuget包

这被称为包恢复同意,对于IDE,您需要对每个用户执行此操作。有一种方法可以覆盖每台机器,但对每个用户来说更容易。

对于服务器,您可以使用值为"true"的EnableNuGetPackageRestore环境变量

了解更多信息:http://docs.nuget.org/docs/reference/package-restore