使用 "nuget.exe restore solution" 时包文件夹中的版本号错误

Wrong version number in packages folder when using "nuget.exe restore solution"

在某些主机上,当使用 nuget.exe restore solution.sln 为了在构建之前强制恢复包,我观察到与 Nuget 可视化插件相比,该命令的行为方式不同。

在某些主机上,命令版本将内部版本号(默认值 0)附加到版本号, 导致包文件夹中的路径包含该内部版本号。

例如,而不是:

/packages/my_package.1.57.0/...

我有:

/packages/my_package.1.57.0.0/...

最终导致构建失败,因为在内部, 存储在 .vcxproj 中的目标正在寻找不包含内部版本号的第一个路径。 我不知道它是否与观察到的行为有关,但这些包是使用 CoApp

构建的本机 C++ 包

如果我没有在同一台主机上使用 nuget.exe,而是使用 visual 2013 中的包管理器恢复功能,它运行良好,并且包被正确复制到不包含内部版本号的路径. 然后build就ok了

由于 nuget.exe 在某些主机上工作而不在其他主机上工作,我怀疑组件版本不同或默认设置不同。

我检查过的组件:

nuget 版本:2.8.50926.602

visual 2013版本:12.0.31101.00更新4

它们在工作和不工作的主机上是相同的。 那还剩下什么?

最后变成了下面这个简单的场景(遗憾的是我无法重现这个问题):

  • 包有问题,自制的boost库包。
  • 其中一些软件包可能已经以相同的名称提供,但是 nuget.org
  • 上的不同内容和版本编号

在有问题的工作站上,我能够通过以下方式解决它:

  • 从存储库列表中禁用 nuget.org
  • 最重要的是 => 清除 nuget 缓存!

即使我无法重现:我对这个场景很有信心,因为在查看包裹时我发现内容与我构建的不同。所以这个包已经从别处下载了。