在C#项目发布过程中,修改程序版本信息、设置程序集的版本号和描述是常规操作,这些信息会显示在程序属性详情中,方便版本管理和用户识别。C#的版本信息通过程序集特性来定义,不同项目类型的配置方式存在区别。

程序集版本相关特性说明
C#中常用的版本相关特性主要有以下几个,每个特性对应不同的用途:
- AssemblyVersion:程序集的版本号,是CLR识别程序集身份的核心依据,格式通常为主版本.次版本.生成号.修订号。
- AssemblyFileVersion:文件版本号,对应Windows系统中文件属性的版本信息,可以和AssemblyVersion不一致。
- AssemblyInformationalVersion:信息版本号,通常用于展示给用户的产品版本,比如v1.2.0-beta这种带标识的版本。
- AssemblyDescription:程序集的描述信息,用于说明程序的功能用途。
- AssemblyTitle:程序集的标题,通常显示程序的名称。
.NET Framework项目修改版本信息
.NET Framework项目的版本信息默认存放在项目的Properties文件夹下的AssemblyInfo.cs文件中,直接修改该文件即可完成配置。
修改AssemblyInfo.cs文件
打开AssemblyInfo.cs文件,找到对应的特性定义,修改对应的值即可,示例如下:
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 程序集标题
[assembly: AssemblyTitle("数据导出工具")]
// 程序集描述
[assembly: AssemblyDescription("用于导出数据库数据到Excel的工具")]
// 程序集版本号,CLR识别用
[assembly: AssemblyVersion("1.2.3.4")]
// 文件版本号,Windows文件属性显示
[assembly: AssemblyFileVersion("1.2.3.4")]
// 信息版本号,可带自定义标识
[assembly: AssemblyInformationalVersion("v1.2.3 正式版")]
// 公司信息
[assembly: AssemblyCompany("XX科技有限公司")]
// 版权信息
[assembly: AssemblyCopyright("Copyright © 2024")]
修改完成后重新生成项目,右键生成的exe或dll文件,查看属性中的详细信息,就能看到更新后的版本和描述信息。
.NET Core/.NET 5+项目修改版本信息
.NET Core及更高版本的项目默认不再生成AssemblyInfo.cs文件,版本信息直接在项目文件(.csproj)中配置,也可以通过手动创建AssemblyInfo.cs文件来配置。
在项目文件中配置
右键项目选择编辑项目文件,在PropertyGroup节点中添加对应的版本属性即可,示例如下:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<!-- 程序集标题 -->
<AssemblyTitle>数据导出工具</AssemblyTitle>
<!-- 程序集描述 -->
<AssemblyDescription>用于导出数据库数据到Excel的工具</AssemblyDescription>
<!-- 程序集版本号 -->
<AssemblyVersion>1.2.3.4</AssemblyVersion>
<!-- 文件版本号 -->
<FileVersion>1.2.3.4</FileVersion>
<!-- 信息版本号 -->
<InformationalVersion>v1.2.3 正式版</InformationalVersion>
<!-- 公司信息 -->
<Company>XX科技有限公司</Company>
<!-- 版权信息 -->
<Copyright>Copyright © 2024</Copyright>
</PropertyGroup>
</Project>
手动创建AssemblyInfo.cs配置
如果需要和.NET Framework项目保持一致,也可以手动在项目的Properties文件夹下创建AssemblyInfo.cs文件,内容和.NET Framework的AssemblyInfo.cs一致,同时需要在项目文件中添加以下配置,避免特性重复定义:
<PropertyGroup> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> </PropertyGroup>
代码中读取程序版本信息
配置完成版本信息后,也可以在程序运行时读取这些版本信息,用于日志输出或者界面展示,示例代码如下:
using System;
using System.Reflection;
class Program
{
static void Main()
{
// 获取当前程序集
Assembly assembly = Assembly.GetExecutingAssembly();
// 获取程序集版本号
Version version = assembly.GetName().Version;
Console.WriteLine($"程序集版本:{version}");
// 获取自定义特性中的描述信息
AssemblyDescriptionAttribute descriptionAttr = assembly.GetCustomAttribute<AssemblyDescriptionAttribute>();
if (descriptionAttr != null)
{
Console.WriteLine($"程序描述:{descriptionAttr.Description}");
}
// 获取信息版本号
AssemblyInformationalVersionAttribute infoVersionAttr = assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>();
if (infoVersionAttr != null)
{
Console.WriteLine($"信息版本:{infoVersionAttr.InformationalVersion}");
}
}
}
注意事项
- AssemblyVersion修改后如果其他项目引用了该程序集,且引用时指定了具体版本,可能会导致引用失败,发布时需要根据实际情况调整。
- AssemblyFileVersion和AssemblyInformationalVersion没有严格的格式要求,可以根据团队的版本规范自定义。
- 如果项目启用了自动生成版本号,比如使用星号占位,生成时系统会自动填充对应数字,例如<AssemblyVersion>1.2.*</AssemblyVersion>。
C#程序集版本AssemblyInfo版本号设置程序描述修改时间:2026-07-13 03:39:27