如何确定 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 平台架构 .
我试过的
- Using C#, how to get whether my machine is 64bit or 32bit?
- How to detect Windows 64-bit platform with .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
我一直在寻找解决方案,但尽管这个问题在答案不再适用于 .NET Standard 1.5 及其跨平台思维方式之前已经提出。另外,这个问题是关于 OS 架构 而不是 .NET 平台架构 .
我试过的
- Using C#, how to get whether my machine is 64bit or 32bit?
- How to detect Windows 64-bit platform with .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