如何从程序集版本中提取版本号后缀?
如何提取版本号中的RC后缀信息
我在项目文件中使用了带RC后缀的版本号3.0.2.1294-rc,写法符合NuGet版本规范,编译时无警告,项目配置如下:
<PropertyGroup> <Version>3.0.2.1294-rc</Version> </PropertyGroup>
但用常规方式获取版本信息时,看不到RC后缀部分,请问该怎么提取这个后缀?
解决方案:使用AssemblyInformationalVersionAttribute获取完整版本
默认情况下,当你在项目文件中设置<Version>时,.NET会自动将这个完整版本号赋值给AssemblyInformationalVersion属性,而AssemblyVersion只能存储纯数字的主.次.建.修订号,会自动截断后缀。所以要获取带RC后缀的完整版本,需要读取AssemblyInformationalVersion:
using System.Reflection; // 获取当前程序集的完整版本信息 var fullVersion = Assembly.GetExecutingAssembly() .GetCustomAttribute<AssemblyInformationalVersionAttribute>()? .InformationalVersion; // 此时fullVersion的值为"3.0.2.1294-rc"
额外说明
如果你的项目中显式设置了AssemblyInformationalVersion,确保它引用了$(Version)变量,这样就能同步完整版本号:
<PropertyGroup> <Version>3.0.2.1294-rc</Version> <AssemblyInformationalVersion>$(Version)</AssemblyInformationalVersion> </PropertyGroup>
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

