NuGet新手问题:类库修改后需改版本号才能更新包至ASP.NET项目
解决NuGet包不更新除非改版本号的问题
嘿,我完全懂你现在的烦恼——两个项目都在频繁迭代,每次改完类库还要手动改版本号才能让ASP.NET项目拿到最新代码,这实在太折腾人了。下面给你几个实用的解决方案,根据你的需求选就行:
为什么会出现这个问题?
先简单说下原因:NuGet默认会缓存相同版本号的包文件,也就是说,如果你用同一个版本号重新打包,ASP.NET项目安装的时候会直接用本地缓存里的旧包,根本不会去读取你新生成的.nupkg文件,只有版本号变了,它才会认为是新包。
解决方案1:开发阶段直接用项目引用(最省心)
如果你的类库和ASP.NET项目在同一个解决方案里,完全没必要打包成NuGet包,直接添加项目引用就好:
- 右键ASP.NET项目的「依赖项」→ 选择「添加项目引用」
- 在弹出的窗口里勾选你的.NET Core 2.0类库项目,确定即可
这样修改类库代码后,ASP.NET项目会自动同步编译最新的代码,连打包步骤都省了,开发效率直接拉满。唯一的缺点是如果需要模拟正式环境的NuGet安装流程,这个方法就不适用了。
解决方案2:用浮动版本号自动生成新版本
如果你确实需要保留NuGet打包的流程,可以把类库的版本号设为浮动版本,让NuGet每次打包自动生成递增的版本号,不用手动修改:
- 打开类库的
.csproj文件 - 找到
<Version>标签,把它改成类似<Version>1.0.*</Version>的格式(前面的主版本、次版本可以自己定)
这样每次执行dotnet pack命令打包时,NuGet会自动把*替换成当前的日期和构建号(比如1.0.202405281),生成一个全新的版本号。你只需要在ASP.NET项目里安装这个自动生成的新版本就行,不用再手动改版本号。
解决方案3:安装时禁用NuGet缓存
如果你想保持固定版本号不变,又要每次安装都拿到最新的包,可以在安装的时候强制忽略缓存:
- 用命令行安装的话,执行:
(把dotnet add package YourLibraryName -s <你的本地NuGet源路径> --no-cacheYourLibraryName换成你的类库包名,<你的本地NuGet源路径>换成你存放.nupkg的文件夹路径) - 如果用Visual Studio的NuGet包管理器安装:
点击「浏览」标签,找到你的本地源,选中要安装的包,然后勾选「忽略本地缓存」选项(不同VS版本位置可能略有不同,一般在安装按钮附近)
这个方法适合需要固定版本号,但又要频繁更新包内容的场景,缺点是每次安装都要额外操作一步。
内容的提问来源于stack exchange,提问作者Nandun
相关产品推荐
相关产品推荐

