当然,欢迎来到 .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 提高安全性
GuidCOM 的唯一标识符(非 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] 或版本自动化脚本的使用?