11

我正在将我们的源代码从 Vault 移动到 TFS,而不是为迁移或任何事情而烦恼,只是在 Vault 中获取最新版本并将其添加到 TFS。

该解决方案有多个项目,每个项目至少有一个 NuGet 包。我正在尝试让包还原再次工作。它在 Vault 中工作(但不是它应该的方式)。我的最后期限有点过了,一开始它不起作用,所以我添加了一个 Pre-Build 事件来针对每个项目的 packages.config 运行 nuget.exe。

TFS 构建服务对此抱怨,所以我试图让它“正常”工作。

  1. 我已经在 Visual Studio 工具菜单中设置了该选项。
  2. 我已安装 NuGetEnablePackageRestore 并运行修复程序。
  3. 我已经验证包目录是源代码管理,但是是空的。
  4. 我已经验证每个项目文件都包含以下内容:
<RestorePackages>true</RestorePackages>
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />

使用诊断级别详细程度构建表明每个项目都会评估这些属性,但 nuget.targets 中的 RestoreCommand 从未执行。

有什么想法吗?

我试图从这些链接中实施解决方案:

  1. nuget - 包还原不起作用
  2. NuGet 包还原不起作用 - 我确实在那里发布了一个问题/评论,要求澄清......
  3. http://nuget.codeplex.com/workitem/1879

编辑

此外,我发现在构建期间正在评估 RestoreCommand 属性。诊断详细程度显示:

RestoreCommand = (set EnableNuGetPackageRestore=true) && "C:\Source\Kiersted Direct And Related\Direct\Kiersted\.nuget\nuget.exe" install "packages.config" -source "@(PackageSource)" -o "C:\Source\Kiersted Direct And Related\Direct\Kiersted\packages"
4

2 回答 2

10

我想通了,我在这里找到了答案:MSBuild not running BuildDependsOn tasks from an import project

问题(在查看了诊断详细度构建输出之后)是 BuildDependsOn 设置未设置。我的项目文件每个都有导入语句

<Import Project="$(SolutionDir)\.nuget\nuget.targets" />

但该语句位于 XML 树的开头。显然,Microsoft.CSharp.targets 的导入可能会干扰该导入,从而干扰 BuildDependsOn。

我的解决方案是将 nuget.targets 导入移动到 Microsoft.CSharp.targets 导入下方。现在一切都构建得很漂亮。

于 2012-11-07T20:06:38.197 回答
0

这个答案需要与其他人一起考虑。就我而言,Visual Studio 决定不将 packages.config 自动添加到源代码管理中。因此,在 Nuget 还原期间,该文件没有进入构建服务器以供考虑。

于 2018-04-19T12:41:22.400 回答