【发布时间】:2014-06-30 13:24:30
【问题描述】:
今天我遇到了一个问题,由于我明显误解了 Enable NuGet Package Restore 在 TFS 的源代码控制项目中的工作方式,我花了一点时间才弄清楚。因此,首先让我解释一下我在过去一周左右解决的问题。
在我们的 TFS 服务器上,我为持续集成创建了构建定义。签入源代码后,构建服务器开始编译源代码,然后由于无法获取 NuGet 包而失败。我最初认为这是由于 Enable NuGet Package Restore 被禁用,所以我在解决方案级别将其打开并重新提交了我的代码。构建继续失败。在没有管理员访问构建服务器的虚拟化实例的情况下,并且管理员最近被淹没了,我让我继续前进,并决定在我的 Sprint 和他的 Sprint 亮起的几周内处理它。目前不需要启动和运行构建服务器。但是,我确实删除了到 TFS 中分支的本地映射,删除了本地目录,重新映射源代码并执行新的获取并重新编译源没有任何问题。 NuGet 包下载得很好。
然而,今天我们有一个新员工加入了团队。他从 TFS 中提取了一个新副本并遇到了一些 SlowCheetah (for transforming our WPF App Configs) 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 分支中。
【问题讨论】:
标签: c# visual-studio tfs msbuild nuget