Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检查Linux和Mac的体系结构_C#_Linux_Macos_Mono_.net 2.0 - Fatal编程技术网

C# 检查Linux和Mac的体系结构

C# 检查Linux和Mac的体系结构,c#,linux,macos,mono,.net-2.0,C#,Linux,Macos,Mono,.net 2.0,我正在尝试获取执行我的软件的计算机的体系结构,到目前为止,它在Windows上运行良好,但在Linux和OSX上失败。让我显示我当前的代码: //--Check processor architecture-- string strProcArchi = System.Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE"); string strProcArchiBis = System.Environment.GetEnviro

我正在尝试获取执行我的软件的计算机的体系结构,到目前为止,它在Windows上运行良好,但在Linux和OSX上失败。让我显示我当前的代码:

//--Check processor architecture--
string strProcArchi = System.Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE");
string strProcArchiBis = System.Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432");

if((strProcArchi != null && strProcArchi.IndexOf("64") > 0) || (strProcArchiBis != null && strProcArchiBis.IndexOf("64") > 0))
{
    Console.WriteLine("Processor is 64-bit");
}
else
{
    Console.WriteLine("Processor is 32-bit");
}
//------
Linux和Mac总是返回“处理器是32位的”,所以我猜这些环境变量在Windows之外是未使用的。我在谷歌上搜索了几天,但没有找到任何具体的信息。关于如何实现这一点有什么想法吗?我需要加载不同的资产,无论执行它的计算机是基于32位还是基于64位的,所以这个检查绝对重要

我在.NET 2.0下,无法使用
环境.is64位操作系统
环境.is64位进程
,因为这是.NET 4.0的功能


提前感谢。

要检测.NET运行时进程的位性(在您的情况下是单进程),您可以检查
IntPtr.Size==8
,要检测处理器的位性,您可以解析OSX上的
sysctl hw.cpu64bit_-capable
命令的输出和
cat/proc/cpuinfo | grep“flags”| grep“lm”
Linux上的命令。

是否
环境。IS64位操作系统
环境。IS64位进程
适用于您?不,对不起,我应该澄清一下。我在.NET2.0下,这是.NET4.0的一个特性。不过还是要谢谢你:)正如你所看到的,Mac已经很久没有使用32位处理器了。@TheDarkKnight我知道,但由于出版商的要求,我仍然需要支持它们。有帮助吗?嗨,jariq,谢谢。这对我没有用,因为可执行文件已经是基于32位的,我需要知道的是程序外的CPU位。@在这种情况下,您可以在OSX上解析sysctl hw.cpu64bit_capable命令的输出以及Linux上的
cat/proc/cpuinfo | grep“flags”| grep“lm”
命令的输出。很好,我一定会试试的。你能把你最后的评论变成一个答案吗?我想将其标记为已接受:)