如何确定 OS 在 .NET Standard 1.5 上是 32 位还是 64 位跨平台?

How to determine if OS is 32 or 64 bit cross-platform on .NET Standard 1.5?

我一直在寻找解决方案,但尽管这个问题在答案不再适用于 .NET Standard 1.5 及其跨平台思维方式之前已经提出。另外,这个问题是关于 OS 架构 而不是 .NET 平台架构 .

我试过的

最佳答案,Environment.Is64BitOperatingSystem 是 API 未在 .NET Standard 1.5 中实现。

答案

/// <summary>Is64s the bit operating system.</summary>
/// <returns></returns>
if (IntPtr.Size == 8)
    // 64Bit
else
    // 32bit

不是我需要的。虽然仍然可以在 .NET Standard 中执行,但它决定了 .NET 平台的位数,而不是底层 OS.

几乎所有其他回复都使用 [DllImport("kernel32.dll")],我几乎可以肯定除了 Windows.

问题

那么,如何为所有 platforms that .NET Standard 1.5 supports(Linux、iOS、Windows、Android, 等等)?

您可以使用System.Runtime.InteropServices.RuntimeInformation.OSArchitecture