当然,欢迎来到 .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]
或版本自动化脚本的使用?
发表回复