从 .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);}