如何在 .NET Standard 1.5 上确定操作系统是 32 位还是 64 位跨平台?

Nig*_*888 3 c# operating-system 32bit-64bit .net-standard .net-standard-1.5

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

我试过的

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

答案

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

不是我需要的。尽管在 .NET Standard 中仍然可以做到,但它决定了 .NET 平台的位数,而不是底层操作系统。

几乎所有其他回复都在使用[DllImport("kernel32.dll")],我几乎可以肯定除了 Windows 之外的任何东西都不会工作。

那么,我如何确定.NET Standard 1.5 支持的所有平台(Linux、iOS、Windows、Android 等)的底层操作系统的位数?

Kni*_*ing 5

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

  • 你确定?https://github.com/dotnet/standard/blob/master/docs/versions/netstandard1.5_ref.md (3认同)