缺少包会导致NuGet包还原失败

Uns*_*ced 5 visual-studio-2010 nuget nuget-package

我们是NuGet的热心用户,无论是内部构建还是第三方软件包.

我们最近开始在一些构建项目中启用NuGet Package Restore选项,以减少我们提交源代码控制的二进制文件的数量,但我们遇到了一个问题.

我们看到Visual Studio需要很长时间才能启动,一旦它启动(可能需要半个多小时),后续构建同样耗费时间.在发生这种情况时,您可以看到许多子NuGet进程在进程资源管理器中出现和死亡.

我们发现如果packages.config文件中引用的软件包版本不能从任何已配置的软件包源获得(可能是内部软件包的旧版本,而且有人帮助我们清理了我们的本地软件包) ,似乎NuGet和Visual Studio进入某种无限(或至少是长期运行的)重试循环.

如果我们从命令行运行NuGet install命令,则会返回错误

>.nuget\NuGet.exe install project\packages.config -o packages
Unable to find version '1.0.0.1' of package 'my.internal.package'.
Run Code Online (Sandbox Code Playgroud)

但看起来Visual Studio/NuGet没有正确使用它.

  • NuGet会在任何地方记录其操作吗?
  • 我们可以限制NuGet还原重试次数或超时(可能在nuget.targets文件中吗?)
  • 看起来NuGet的语义版本没有被使用,因为在上面的场景中,1.0.0.2可以从repo中获得,是否可以启用它?

Dee*_*pak 2

这似乎与此问题类似http://nuget.codeplex.com/workitem/2970 对我有用的临时解决方法是打开 nuget.targets 并替换
<!-- 我们需要确保在程序集解析之前恢复包-- >
<ResolveReferencesDependsOn Condition="$(RestorePackages) == 'true'">
RestorePackages;
$(ResolveReferencesDependsOn);
</ResolveReferencesDependsOn>

<BuildDependsOn Condition="$(RestorePackages) == 'true'">
RestorePackages;
$(BuildDependsOn);
</BuildDependsOn>

关闭并重新加载 VS 中的解决方案。这将使构建依赖于恢复包而不是程序集解析,这似乎解决了问题。

希望这可以帮助。