You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何以编程方式获取.NET Core核心类库DLL的版本号?

获取Windows核心DLL版本号的正确姿势

嘿,我之前也踩过这个坑!那些api-ms-win-core-console-l1-1-0.dll这类文件并不是.NET程序集,而是Windows平台的原生系统DLL(属于Windows API集的一部分),所以你用.NET Reflection里的AssemblyName.GetAssemblyName()方法肯定会报错——这类DLL根本没有.NET程序集清单,反射方法只适用于真正的.NET类库。

靠谱的解决方案:用FileVersionInfo读取文件版本

针对原生DLL,我们可以直接读取文件本身携带的版本元数据,不需要加载程序集。下面是可以直接运行的示例代码:

using System.Diagnostics; // 需要引用这个命名空间

string file = @"C:\dotnet_core_lib\api-ms-win-core-console-l1-1-0.dll";
FileVersionInfo fileVersionInfo = FileVersionInfo.GetVersionInfo(file);

// 获取完整的文件版本字符串
string fullVersion = fileVersionInfo.FileVersion;
// 或者单独获取版本的各个部分
int major = fileVersionInfo.FileMajorPart;
int minor = fileVersionInfo.FileMinorPart;
int build = fileVersionInfo.FileBuildPart;
int revision = fileVersionInfo.FilePrivatePart;

Console.WriteLine($"完整版本号:{fullVersion}");
Console.WriteLine($"拆分版本:{major}.{minor}.{build}.{revision}");

为什么这个方法能行?

  • FileVersionInfo是直接读取PE文件(Windows可执行文件/DLL)的版本资源段,不需要把整个DLL加载到内存,也完全不依赖.NET程序集的结构。
  • 不管是你提到的那些核心系统DLL,还是普通的Windows原生程序,这个方法都能稳定获取版本信息。

小补充

如果需要获取和Windows系统版本关联的产品版本,还可以用fileVersionInfo.ProductVersion属性,它返回的是该DLL所属的Windows组件版本。

内容的提问来源于stack exchange,提问作者RPrashant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:43:43