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

.NET 7+如何获取运行中程序集的处理器架构?

在 .NET 7+ 中获取程序集处理器架构的替代方案

在 .NET 7 及以后版本中,AssemblyName.ProcessorArchitecture 已被标记为过时,以下是两种无需指定程序集名称的替代方案:

方案一:读取程序集PE元数据(获取编译时目标架构)

通过 System.Reflection.Metadata 命名空间读取当前执行程序集的PE头信息,可获取程序集编译时指定的目标架构:

using System.Reflection;
using System.Reflection.Metadata;
using System.Reflection.PortableExecutable;
using System.IO;

// 获取当前执行程序集的物理路径
string assemblyPath = Assembly.GetExecutingAssembly().Location;

using var fileStream = File.OpenRead(assemblyPath);
using var peReader = new PEReader(fileStream);

if (peReader.HasMetadata)
{
    MetadataReader metadataReader = peReader.GetMetadataReader();
    AssemblyDefinition assemblyDef = metadataReader.GetAssemblyDefinition();
    
    // 将MetadataProcessorArchitecture映射为原ProcessorArchitecture枚举值
    ProcessorArchitecture targetArch = assemblyDef.Architecture switch
    {
        MetadataProcessorArchitecture.Amd64 => ProcessorArchitecture.Amd64,
        MetadataProcessorArchitecture.X86 => ProcessorArchitecture.X86,
        MetadataProcessorArchitecture.IA64 => ProcessorArchitecture.IA64,
        MetadataProcessorArchitecture.Arm => ProcessorArchitecture.Arm,
        MetadataProcessorArchitecture.Arm64 => ProcessorArchitecture.Arm64,
        _ => ProcessorArchitecture.MSIL
    };
    
    // 输出结果,比如MSIL、Amd64等
    Console.WriteLine(targetArch);
}

方案二:获取当前进程运行架构(适用于多数场景)

如果你的需求是获取程序实际运行时的处理器架构(而非编译时的目标架构),可以直接使用 RuntimeInformation 类,无需读取程序集元数据:

using System.Runtime.InteropServices;

Architecture processArch = RuntimeInformation.ProcessArchitecture;

// 映射为原ProcessorArchitecture枚举值
ProcessorArchitecture runtimeArch = processArch switch
{
    Architecture.X64 => ProcessorArchitecture.Amd64,
    Architecture.X86 => ProcessorArchitecture.X86,
    Architecture.Arm => ProcessorArchitecture.Arm,
    Architecture.Arm64 => ProcessorArchitecture.Arm64,
    _ => ProcessorArchitecture.MSIL
};

Console.WriteLine(runtimeArch);

两种方案的区别

  • 方案一获取的是程序集编译时设定的目标架构(例如AnyCPU编译的程序集会返回MSIL);
  • 方案二获取的是当前进程实际运行的架构(例如AnyCPU程序在64位系统上运行会返回Amd64)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 22:42:17