dotnet 判断应用是否运行于 ARM64 架构的处理器上

从 .NET Standard 1.1 开始,dotnet 新增了 Architecure 枚举,用于表示处理器的架构(X86、X64、Arm或Arm64)。可参考微软的官方文档:

https://learn.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.architecture?view=netstandard-1.1

仅需一行代码即可获取:

Console.WriteLine("ProcessArchitecture:");Console.WriteLine(System.Runtime.InteropServices.RuntimeInformation.ProcessArchitecture);

在 Arm64 处理器的机器上,输出如下:.

ProcessArchitecture:Arm64

在 X64 处理器的机器上,输出如下:

ProcessArchitecture:X64

如果需要在更低版本的 Framework 上获取 CPU 是否是 ARM64 架构,可以使用以下代码(仅支持 Windows 平台):

//https://stackoverflow.com/questions/54456140/how-to-detect-were-running-under-the-arm64-version-of-windows-10-in-netpublic static class ArchitectureInfo{  public static bool IsArm64()  {    var handle = Process.GetCurrentProcess().Handle;    IsWow64Process2(handle, out var processMachine, out var nativeMachine);
    return nativeMachine == 0xaa64;  }    [DllImport("kernel32.dll", SetLastError = true)]  private static extern bool IsWow64Process2(    IntPtr process,    out ushort processMachine,    out ushort nativeMachine);}