0

0

C# 如何获取程序集(Assembly)版本信息 - 反射的应用

畫卷琴夢

畫卷琴夢

发布时间:2025-12-26 09:12:09

|

207人浏览过

|

来源于php中文网

原创

C#中获取程序集版本最常用方式是通过反射调用Assembly类属性:用GetExecutingAssembly()获当前程序集版本,GetEntryAssembly()获入口程序集版本(需判空),typeof(T).Assembly获指定类型所在程序集版本,并可用GetCustomAttribute读取 AssemblyTitle 等元数据。

c# 如何获取程序集(assembly)版本信息 - 反射的应用

在 C# 中,获取程序集(Assembly)的版本信息最常用、最直接的方式就是利用 反射(Reflection),通过 Assembly 类及其相关属性实现。核心在于拿到当前或指定程序集的 Assembly 实例,再读取其 GetName().Version 或其他元数据属性。

获取当前程序集的版本号

这是最常见场景,比如在日志、About 窗口或 API 响应中显示本程序版本:

  • 使用 Assembly.GetExecutingAssembly() 获取当前正在执行的程序集(即包含该调用代码的 .dll 或 .exe)
  • 调用 .GetName().Version 得到 Version 对象,可直接转为字符串(如 v.ToString()
  • 也可分别访问 MajorMinorBuildRevision 四个整数字段

示例代码:

var version = Assembly.GetExecutingAssembly().GetName().Version;
Console.WriteLine($"版本:{version}"); // 输出如 1.2.3.4
Console.WriteLine($"主版本:{version.Major}");

获取入口程序集(主程序)的版本

适用于类库中需要知道宿主应用(如 WinForm、ASP.NET Core 主项目)版本的情况:

  • Assembly.GetEntryAssembly() 获取启动当前进程的程序集
  • 注意:在某些上下文(如单元测试、某些插件环境)中可能返回 null,需判空

示例:

var entry = Assembly.GetEntryAssembly();
if (entry != null)
  Console.WriteLine($"主程序版本:{entry.GetName().Version}");

获取指定类型所在程序集的版本

当你有一个类型(Type),想查它定义在哪个程序集及该程序集的版本:

剪映
剪映

一款全能易用的桌面端剪辑软件

下载
  • 通过 typeof(SomeClass).Assembly 或实例的 GetType().Assembly 拿到程序集
  • 再调用 .GetName().Version 即可

示例:

var version = typeof(Program).Assembly.GetName().Version;
// 或 var version = obj.GetType().Assembly.GetName().Version;

读取更完整的程序集元数据(标题、描述、公司等)

除了版本号,常需获取 AssemblyTitleAssemblyDescription 等友好名称,这些来自程序集特性(Assembly Attributes):

  • 使用 GetCustomAttribute() 方法读取如 AssemblyTitleAttribute
  • 需引用 System.Reflection,且确保对应特性已在 AssemblyInfo.cs(或 .csproj)中设置

示例:

var assembly = Assembly.GetExecutingAssembly();
var title = assembly.GetCustomAttribute()?.Title ?? "未知标题";
var desc = assembly.GetCustomAttribute()?.Description ?? "";

基本上就这些。反射获取版本不复杂但容易忽略细节,比如混淆 GetExecutingGetEntry、忘记判空、或误以为 Version 字符串格式固定(实际可能缺省 Revision)。按需选择合适方式,再加点防御性代码,就能稳稳拿到想要的信息。

相关专题

更多
c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

226

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

430

2024.03.01

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

703

2023.08.22

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

246

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

203

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1428

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

606

2023.11.24

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

546

2024.03.22

笔记本电脑卡反应很慢处理方法汇总
笔记本电脑卡反应很慢处理方法汇总

本专题整合了笔记本电脑卡反应慢解决方法,阅读专题下面的文章了解更多详细内容。

1

2025.12.25

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C# 教程
C# 教程

共94课时 | 5.3万人学习

C 教程
C 教程

共75课时 | 3.7万人学习

C++教程
C++教程

共115课时 | 9.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号