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

时间:2013-01-25 11:56:48

标签: 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'.

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

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

2 个答案:

答案 0 :(得分:2)

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

           RestorePackages;
           $(ResolveReferencesDependsOn);
       < / ResolveReferencesDependsOn>

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

      RestorePackages;
      $(BuildDependsOn);
    < / BuildDependsOn>

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

希望这会有所帮助。

答案 1 :(得分:0)

首先,您的版本控制不符合nuget推荐的版本,即1.2.3。因此,您应该尝试将您的版本升级为1.0.1,看看是否能解决问题。

  • NuGet会在任何地方记录其操作吗?

您可以在命令行“nuget install”中使用-verbosity标志来获取其他信息。 输出窗口中也提供了详细信息。从下拉列表中选择“包管理器”。 有关更多用途,请使用devenv / log

  • 我们可以限制NuGet恢复重试次数或超时(可能是在 nuget.targets文件?)

这里不知道任何方式。

  • 看起来NuGet的语义版本没有被使用, 因为在上面的场景中,1.0.0.2可以从repo中获得,可以 这是启用吗?

这可以通过检查工具 - >选项 - >中的“自动检查升级”来实现。包经理?查看您的packages.config是否将版本限制为1.0.0.1