Nuget软件包还原没有恢复构建中的软件包



我正在将我们的源代码从保险库移动到TFS,而不用迁移或其他任何内容,只需将最新的库中的最新添加到TFS中。

该解决方案有几个项目,每个项目至少有一个Nuget软件包。我正在尝试使软件包还原再次工作。它在金库中起作用(但不能以应有的方式)。我已经有一个截止日期了,而且起初它没有工作,所以我添加了一个前构建事件,以对每个项目的packages.config运行nuget.exe。

tfs构建服务抱怨,所以我试图使其"正确"。

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

用诊断水平的详细构建均显示每个项目都评估了这些属性,但是Nuget中的Restorecommand。从未执行核心。

有什么想法吗?

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

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

编辑

此外,我发现在构建过程中正在评估RestoreCommand属性。诊断冗长表明:

RestoreCommand = (set EnableNuGetPackageRestore=true) && "C:SourceKiersted Direct And RelatedDirectKiersted.nugetnuget.exe" install "packages.config" -source "@(PackageSource)" -o "C:SourceKiersted Direct And RelatedDirectKierstedpackages"

我弄清楚了,我在这里找到了答案:msbuild未从导入的项目运行builddependson任务

问题(浏览了诊断性的冗长构建输出之后)是buildDependson设置正在变得不设置。我的项目文件每个都有导入语句

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

但是该语句在XML树的开头。显然,Microsoft.csharp.targets的导入可能会干扰该导入,从而干扰了buildDependson。

我的解决方案是将nuget.targets导入到Microsoft.csharp.targets导入下方。现在一切都建立了精美。

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

最新更新