导读:本期聚焦于小伙伴创作的《C#怎么修改程序版本信息?如何设置程序集的版本号和描述》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《C#怎么修改程序版本信息?如何设置程序集的版本号和描述》有用,将其分享出去将是对创作者最好的鼓励。

在C#项目发布过程中,修改程序版本信息、设置程序集的版本号和描述是常规操作,这些信息会显示在程序属性详情中,方便版本管理和用户识别。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

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。