NuGet包还原不会在构建时还原包

Cod*_*ior 11 msbuild tfs package-managers nuget

我正在将我们的源代码从Vault迁移到TFS,而不是为迁移或其他任何事情而烦恼,只需将最新的保险库添加到TFS中即可.

该解决方案有几个项目,每个项目至少有一个NuGet包.我想让Package Restore再次运行.它在Vault中工作(但不是它应该的方式).我在一个截止日期之前,它最初没有工作,所以我添加了一个Pre-Build事件来针对每个项目的packages.config运行nuget.exe.

TFS构建服务抱怨这一点,所以我试图让它"正确"工作.

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

使用诊断级别详细程度构建会显示每个项目都会评估这些属性,但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"
Run Code Online (Sandbox Code Playgroud)

Cod*_*ior 10

我想通了,我在这里找到了答案:MSBuild没有从导入的项目中运行BuildDependsOn任务

问题(在查看Diagnostic verbosity build输出之后)是BuildDependsOn设置未设置.我的项目文件都有import语句

<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
Run Code Online (Sandbox Code Playgroud)

但该声明是在XML树的开头.显然,Microsoft.CSharp.targets的导入可能会干扰该导入,从而干扰BuildDependsOn.

我的解决方案是将nuget.targets导入移动到Microsoft.CSharp.targets导入下面.现在一切都很美好.