.NET 6项目中如何通过.csproj设置自定义格式的ProductVersion或FileVersion
.NET 6项目中如何通过.csproj设置自定义格式的ProductVersion或FileVersion
嘿,这个问题我之前折腾过好一会儿!.NET 6里默认的版本属性确实卡数字格式,但完全不用去改编译后的程序集,直接在.csproj里就能搞定自定义ProductVersion,甚至灵活处理FileVersion。
一、设置自定义格式的ProductVersion(完全支持任意字符串)
其实ProductVersion对应的是程序集的AssemblyInformationalVersion属性,这个属性对格式没有严格的数字要求,你可以随便填自定义字符串。直接在你的.csproj文件里添加以下配置:
<PropertyGroup> <!-- 这里替换成你想要的自定义版本,比如"v2.1-beta+build456"或者"2024夏季正式版" --> <AssemblyInformationalVersion>你的自定义版本字符串</AssemblyInformationalVersion> </PropertyGroup>
编译完成后,右键点击生成的程序集文件→属性→详细信息,就能看到“产品版本”已经变成你设置的自定义字符串了。
二、自定义FileVersion(注意系统格式限制)
FileVersion对应的是AssemblyFileVersion属性,这个属性受Windows系统限制,必须是x.y.z.w的四段数字格式(每段都是整数),没法直接用纯字母或非数字符号。不过你可以灵活构造符合要求的数字版本,比如固定值或者动态生成:
1. 固定自定义数字版本
直接在.csproj里指定:
<PropertyGroup> <FileVersion>2024.5.20.1</FileVersion> </PropertyGroup>
2. 动态生成数字版本
如果想根据构建日期自动生成版本,可以用MSBuild的内置函数:
<PropertyGroup> <!-- 获取当前构建的年、月、日 --> <BuildYear>$([System.DateTime]::Now.Year)</BuildYear> <BuildMonth>$([System.DateTime]::Now.Month)</BuildMonth> <BuildDay>$([System.DateTime]::Now.Day)</BuildDay> <!-- 构造四段式数字版本 --> <FileVersion>$(BuildYear).$(BuildMonth).$(BuildDay).1</FileVersion> </PropertyGroup>
三、同时控制多个版本属性的完整示例
如果需要同时控制程序集版本、产品版本和文件版本,可以把这些配置放在一起:
<PropertyGroup> <!-- 程序集版本(AssemblyVersion),要求数字格式,影响程序集的标识 --> <Version>1.0.0.0</Version> <!-- 自定义产品版本,支持任意字符串 --> <AssemblyInformationalVersion>v1.0-20240520-正式版</AssemblyInformationalVersion> <!-- 自定义文件版本,必须是四段数字格式 --> <FileVersion>1.0.20240520.1</FileVersion> </PropertyGroup>
备注:内容来源于stack exchange,提问作者Master_T
相关产品推荐
相关产品推荐

