如何安装特定版本的nuget?

den*_*ufa 5 .net c# visual-studio nuget

我正在解决特定版本的 nuget 和 msbuild 的一些问题,因此需要降级 nuget 版本:

在 Travis CI 上使用 Mono 5.14.0.177、msbuild 15.0、nuget 4.7.1 构建失败,但在 VirtualBox 中无法重现

可以使用以下命令将 Nuget 更新到最新版本:

nuget update -self

但是安装特定版本的 nuget 似乎不受支持,这仍然安装最新版本的 nuget:

nuget update -self -Version 4.6.2

这失败了 nuget not found 错误:

nuget install nuget -Version 4.6.2

https://docs.microsoft.com/en-us/nuget/tools/cli-ref-install

https://docs.microsoft.com/en-us/nuget/tools/cli-ref-update


编辑:

查看 nuget 源代码,开发人员假设更新应该总是发生在最新版本上:

https://github.com/NuGet/NuGet.Client/blob/3803820961f4d61c06d07b179dab1d0439ec0d91/src/NuGet.Clients/NuGet.CommandLine/Common/SelfUpdater.cs#L85

// Check to see if an update is needed
if (package == null || version >= package.Version)
Run Code Online (Sandbox Code Playgroud)

非常悲伤的决定,微软!因此提交了 PR 并被拒绝:

https://github.com/NuGet/NuGet.Client/pull/2422

Leo*_*SFT 1

如何安装特定版本的nuget?

根据文档NuGet CLI 参考

每次下载直接都是nuget.exe文件。指示您的浏览器将文件保存到您选择的文件夹中。该文件不是安装程序;如果直接从浏览器运行它,您将看不到任何内容。

我们可以知道,NuGet.exe 不是安装程序。您可以从nuget.org下载您想要的版本,然后替换本地磁盘上的版本。

虽然NuGet团队提供了命令行nuget update -self,可用于更新nuget.exe到最新版本,但正如您所说,nuget update命令不支持更新指定版本的nuget.exe。所以,我认为你的PR是合理的,但应该处于较低的优先级。因为我们可以nuget.exe通过手动下载来更新。

希望这清楚并有帮助。