You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NuGet包版本未更新:打包后版本与指定值不符求助

NuGet打包版本号不匹配的排查与解决方法

我之前也踩过完全一样的坑!明明在.nuspec或者Properties\AssemblyInfo.cs里改好了版本号,结果pack命令生成的.nupkg还是旧版本,给你整理几个最常见的原因和解决办法:

1. 打包命令的版本参数覆盖了配置

如果你用nuget pack或者dotnet pack的时候加了-Version(或者/Version)参数,这个命令行参数的优先级会高于.nuspec和AssemblyInfo里的配置!比如你之前可能不小心执行过nuget pack -Version 1.0.0,后来没修改参数就直接打包,那生成的包肯定还是1.0.0版本。

  • 解决:检查你的打包命令,去掉这个参数,或者把参数值改成你期望的1.0.1。

2. SDK风格项目的.csproj配置优先级更高

如果你的项目是SDK风格(.csproj开头有<Project Sdk="Microsoft.NET.Sdk">),项目文件里的<Version>字段会直接覆盖AssemblyInfo和.nuspec里的版本设置!很多时候我们改了半天.nuspec,结果.csproj里还留着旧的<Version>1.0.0</Version>配置。

  • 解决:打开你的.csproj文件,找到<Version>节点,把值改成1.0.1;如果不需要这个字段,直接删掉也行。

3. AssemblyInfo里改了错误的版本字段

NuGet打包时默认优先读取AssemblyInformationalVersion字段的值,而不是AssemblyVersion。如果你只修改了AssemblyVersion,没改AssemblyInformationalVersion,那打包出来的版本还是旧的。

  • 解决:打开Properties\AssemblyInfo.cs,确保[assembly: AssemblyInformationalVersion("1.0.1")]这个字段的版本号是正确的。

4. 旧编译输出或NuGet缓存搞鬼

有时候项目的bin/obj文件夹里还留着旧版本的编译文件,或者NuGet本地缓存里有旧的包信息,导致打包时读取了旧数据。

  • 解决:
    • 手动删除项目根目录下的bin和obj文件夹;
    • 执行命令清理NuGet缓存:nuget locals all -clear;
    • 重新编译项目后再执行打包命令。

5. .nuspec里用了变量但源版本不对

如果你的.nuspec里版本号写的是<version>$version$</version>这种变量形式,它会自动读取项目的版本配置(比如.csproj或AssemblyInfo),这时候你得确保这个变量对应的源版本是正确的,而不是硬编码的旧值。

  • 解决:如果想直接指定版本,把变量改成硬编码的<version>1.0.1</version>;如果要保留变量,就确保项目的版本配置是正确的。

我当时就是因为项目文件里偷偷加了个<Version>字段没注意,改了.nuspec半天没用,后来排查.csproj才发现问题😂

内容的提问来源于stack exchange,提问作者lerp90

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:18:13