使用" nuget.exe恢复解决方案时,包文件夹中的版本号错误"

时间:2015-02-10 09:28:18

标签: visual-studio visual-studio-2012 nuget nuget-package-restore

在某些主机上,使用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中的软件包管理器还原功能,它可以很好地工作,并且使用不包含内部版本号的路径正确复制软件包。 然后构建就可以。

由于nuget.exe适用于某些主机,而不适用于其他主机,我怀疑是组件的不同版本还是其他默认设置。

对于我检查的组件:

nuget版本:2.8.50926.602

visual 2013版本:12.0.31101.00更新4

它们在主机上都是相同的,但不起作用。 那剩下什么了?

1 个答案:

答案 0 :(得分:0)

最后它结束了以下简单的场景(遗憾的是我无法重现这个问题):

  • 自带包装升级库的麻烦包。
  • 其中一些软件包可能具有相同的名称,但是 nuget.org上的不同内容和版本编号

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

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

即使我无法重现:我对这种情况非常有信心,因为在查看包装内部时,我看到内容与我构建的内容不同。所以这个包已经从别处下载了。