当然,欢迎来到 .NET 魔法堂🧙♂️——本期主题是:
🔮 AssemblyInfo.cs 文件详解
🌟 什么是 AssemblyInfo.cs?
在 .NET 中,AssemblyInfo.cs 是一个用于定义程序集(Assembly)元数据的文件,通常位于项目的 Properties 或 My Project 目录中。
这些信息包括:
- 程序集的标题、版本、公司名
 - 是否为 COM 可见
 - 签名信息(强名称签名)
 - GUID 等
 
这些元数据在构建时编译进程序集(DLL / EXE)中,并可通过反射读取。
📜 一个典型的 AssemblyInfo.cs 示例:
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
[assembly: AssemblyTitle(“MyAwesomeApp”)]
[assembly: AssemblyDescription(“这是一个演示 AssemblyInfo 的例子”)]
[assembly: AssemblyConfiguration(“”)]
[assembly: AssemblyCompany(“奥雷连诺工作室”)]
[assembly: AssemblyProduct(“MyAwesomeApp产品系列”)]
[assembly: AssemblyCopyright(“Copyright © 2025”)]
[assembly: AssemblyTrademark(“”)]
[assembly: AssemblyCulture(“”)] // 设置为 false 则该程序集不会暴露给 COM 组件
[assembly: ComVisible(false)]
// 如果需要将该程序集暴露给 COM,则需要设置 GUID
[assembly: Guid(“e02e6f94-1234-4567-89ab-d8ee55f7dcd1”)]
// 程序集版本信息
[assembly: AssemblyVersion(“1.0.0.0”)]
[assembly: AssemblyFileVersion(“1.0.0.0”)]
📚 每一项属性详解
| 特性 | 说明 | 
|---|---|
AssemblyTitle | 程序集标题(显示在文件属性中) | 
AssemblyDescription | 描述(用于说明用途/作者等) | 
AssemblyConfiguration | 配置,一般用于 Debug / Release | 
AssemblyCompany | 公司名称 | 
AssemblyProduct | 产品名称 | 
AssemblyCopyright | 版权信息 | 
AssemblyTrademark | 商标 | 
AssemblyCulture | 区域性/语言文化,一般用于卫星程序集(多语言) | 
ComVisible | 控制程序集是否对 COM 可见,默认 false 提高安全性 | 
Guid | COM 的唯一标识符(非 COM 项目也可以保留) | 
AssemblyVersion | 程序集的主版本号:用于绑定和依赖 | 
AssemblyFileVersion | 文件版本号:显示在文件属性中,但不参与绑定 | 
AssemblyInformationalVersion | 产品版本号:可以包含附加信息如 beta、rc 等(显示用) | 
🔁 AssemblyVersion vs AssemblyFileVersion
| 特性 | 参与程序集绑定? | 文件属性中显示? | 可用于标识部署版本? | 
|---|---|---|---|
AssemblyVersion | ✅ 是 | ❌ 否 | ✅ 是 | 
AssemblyFileVersion | ❌ 否 | ✅ 是 | ✅ 是 | 
AssemblyInformationalVersion | ❌ 否 | ✅ 是(带字符串) | ✅ 是 | 
例子:
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion(“1.0.5.1234”)]
[assembly: AssemblyInformationalVersion(“1.0.5-beta”)]
🛠️ 在 .NET Core / .NET 5+ 中发生了什么变化?
在 .NET Core 和 .NET 5+ 中,AssemblyInfo.cs 通常由 SDK 自动生成,除非你自己创建它,或者在 .csproj 中使用属性声明,如:
<PropertyGroup>
  <AssemblyTitle>MyApp</AssemblyTitle>
  <Version>1.0.0</Version>
  <FileVersion>1.0.0.1234</FileVersion>
  <Authors>奥雷连诺</Authors>
</PropertyGroup>
自动生成内容也会体现在 obj 文件夹的临时 AssemblyInfo.cs 中。
你也可以通过在项目文件中加:
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
手动控制和维护自己的 AssemblyInfo.cs。
🧙♂️ 奥雷连诺秘籍:何时修改它?
- 发布新版本时:更新版本号
 - 多项目引用出现版本冲突时:使用 
[InternalsVisibleTo]配置共享内部类 - 使用 COM 或需要生成类型库时:配置 
Guid和ComVisible - 对外展示品牌信息:配置 Title / Product / Company
 
✅ 总结一句话
AssemblyInfo.cs是你的程序集的身份证,不但决定了别人如何识别它,还影响运行时行为、COM 能力和版本控制。它是.NET 魔法堂的基础卷轴之一,必须熟练掌握!
如需示例项目或要配合签名、公钥等高级特性使用,欢迎继续召唤“奥雷连诺宝典”!是否还想了解如 [InternalsVisibleTo] 或版本自动化脚本的使用?
发表回复