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

时间:2012-11-07 17:33:58

标签: tfs msbuild nuget package-managers

我正在将我们的源代码从Vault迁移到TFS,而不用担心迁移或其他任何事情,只需提取最新的保险库并将其添加到TFS。

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

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

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

    使用诊断级别详细程度构建显示每个项目都会评估这些属性,但nuget.targets中的RestoreCommand永远不会执行。

    有什么想法吗?

    我试图通过以下链接实施解决方案:

    1. nuget - package restore not working
    2. NuGet Package Restore Not Working - 我在那里发了一个问题/评论要求澄清......
    3. http://nuget.codeplex.com/workitem/1879
    4. 修改

      此外,我发现在构建期间正在评估RestoreCommand属性。 Diagnostic Verbosity显示:

      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"
      

2 个答案:

答案 0 :(得分:10)

我明白了,我在这里找到答案:MSBuild not running BuildDependsOn tasks from an imported project

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

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

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

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

答案 1 :(得分:0)

这个答案需要与其他人一起考虑。就我而言,Visual Studio决定不将packages.config自动添加到Source Control中。因此,在Nuget恢复期间,文件没有通过构建服务器进行考虑。