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

3
我一直在苦苦寻找解决方案,但虽然此问题曾经被问过,但答案已不再适用于.NET Standard 1.5及其跨平台的思维方式。另外,这个问题涉及的是操作系统架构而不是.NET平台架构。
我尝试过以下方法: - 使用C#获取计算机是64位还是32位:https://dev59.com/dmw05IYBdhLWcg3wykvn - 如何检测Windows 64位平台:https://dev59.com/z3RC5IYBdhLWcg3wUvQS
其中最佳答案是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平台的位数,而不是底层操作系统。

几乎所有其他答案都使用[DllImport("kernel32.dll")],我几乎可以肯定它只能在Windows上工作。

问题

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


到目前为止,我看到的几乎所有Mono实现都使用了相同的IntPtr.Size技巧。 - Timothy Groote
可能是重复的问题:如何判断我的应用程序是以32位还是64位运行? - Owen Pauling
@OwenPauling 不是的,这个问题特指 .NET Standard,它不提供那个线程中每个答案所使用的功能。 - Timothy Groote
@DavidG 那段代码都使用了 Windows 特定的代码。 - Timothy Groote
1
请重新打开这个问题。它不是链接问题的副本(这与应用程序位数无关,而是与底层操作系统有关)。 - NightOwl888
显示剩余3条评论
1个回答

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

3
你确定吗?https://github.com/dotnet/standard/blob/master/docs/versions/netstandard1.5_ref.md - Knight King

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接