如何在.NET中仅维护一处版本,设置NuGet包版本并保留自动递增?
解决方案
可以通过MSBuild属性实现版本信息的单一维护,同时满足NuGet包版本固定前缀、程序集自动版本的需求,步骤如下:
- 修改.csproj文件,定义共享版本前缀
在项目的.csproj文件中添加以下配置,把版本前缀集中在这里维护:
<PropertyGroup> <!-- 只需要修改这里的VersionPrefix值,就是你要的NuGet包版本前缀 --> <VersionPrefix>0.5</VersionPrefix> <!-- NuGet包版本直接使用这个前缀 --> <Version>$(VersionPrefix)</Version> <!-- 让程序集版本自动生成:前缀+自动修订号 --> <AssemblyVersion>$(VersionPrefix).*</AssemblyVersion> <!-- 可选:文件版本也使用自动生成规则,和程序集版本保持一致 --> <FileVersion>$(VersionPrefix).*</FileVersion> </PropertyGroup>
- 清理AssemblyInfo.cs中的重复配置
删除AssemblyInfo.cs里的[assembly: AssemblyVersion("0.5.*")]以及[assembly: FileVersion]相关行。SDK风格的C#项目默认会根据.csproj里的属性自动生成AssemblyInfo的版本信息,手动配置会产生冲突。
这样设置后:
- NuGet包的版本就是你定义的
VersionPrefix值(比如示例中的0.5) - 程序集的AssemblyVersion会自动生成类似
0.5.1234.5678的版本号(*号会被MSBuild自动替换为基于编译时间的修订号) - 所有版本相关的修改只需要在.csproj的
VersionPrefix里操作,不用两处维护
内容的提问来源于stack exchange,提问作者AndrewR
相关产品推荐
相关产品推荐

