Visual Studio 2017发布NuGet包失败:版本过低及更新无效问题求助
问题分析与解决方案
咱们先拆解下为什么最新版VS2017还是会碰到这个推送失败的问题:
从你的构建日志能明确看到,VS使用的是NuGet Packager 2.0.3工具,它实际调用的NuGet.exe版本是2.2.0——虽然日志里显示“正在将NuGet.exe更新至4.4.1”,但大概率是更新没生效,或者这个旧工具根本没调用到更新后的exe。而你后来安装的NuGet.VisualStudio包,是给VS包管理器控制台用的组件,和打包推送时调用的独立NuGet.exe不是一回事,所以解决不了推送的核心问题。
接下来是具体的解决步骤:
1. 确保拥有符合要求的NuGet.exe版本
- 打开命令提示符(CMD)或PowerShell,输入
nuget --version,查看当前版本是否为4.1.0及以上。 - 如果版本不达标,去NuGet官方下载最新版的NuGet.exe,把它放到一个固定路径(比如
C:\Tools\NuGet),再将这个路径添加到系统的环境变量PATH中,确保系统能优先调用新版exe。
2. 替换VS自带的NuGet.exe(可选,让VS工具直接用新版)
VS2017社区版自带的NuGet.exe一般在这个路径:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\NuGet
把该文件夹里的旧NuGet.exe替换成你刚下载的最新版,这样VS的NuGet Packager工具就能直接调用新版exe完成推送了。
3. 改用命令行手动推送(最稳妥的方案)
如果上面的方法仍有问题,直接用命令行推送更可靠:
- 找到生成的
MyProject.1.0.6.nupkg文件所在目录(日志里是项目的Release输出目录)。 - 打开命令行切换到该目录,执行以下命令(把
你的API密钥替换成你在NuGet.org上的专属API密钥):
nuget push MyProject.1.0.6.nupkg -Source https://www.nuget.org/api/v2/package -ApiKey 你的API密钥
另外,日志里还有个小细节:你的nuspec文件里用了developmentDependency元素,旧版NuGet不支持这个,但新版NuGet已经兼容,所以更新NuGet.exe后这个问题也会自动消失。
内容的提问来源于stack exchange,提问作者Boris Zinchenko
相关产品推荐
相关产品推荐

