使用 "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 缓存!
即使我无法重现:我对这个场景很有信心,因为在查看包裹时我发现内容与我构建的不同。所以这个包已经从别处下载了。
在某些主机上,当使用 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 缓存!
即使我无法重现:我对这个场景很有信心,因为在查看包裹时我发现内容与我构建的不同。所以这个包已经从别处下载了。