Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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
如何在Mono和.NET中检测受支持的框架体系结构(x86或x86-64)?_.net_Mono_X86_X86 64 - Fatal编程技术网

如何在Mono和.NET中检测受支持的框架体系结构(x86或x86-64)?

如何在Mono和.NET中检测受支持的框架体系结构(x86或x86-64)?,.net,mono,x86,x86-64,.net,Mono,X86,X86 64,在.NET/Windows中,有一个处理器\u体系结构环境变量,用于标识正在运行的进程是x32、x64还是IA64 还有一种API方法可以判断Windows操作系统是否支持x86-64 只要Windows x64上有x86版本,就一定会有x64版本的.NET Framework吗?或者有什么方法可以检测机器上的.NET安装支持哪些平台 Mono/Linux或其他非Microsoft的实现呢?x86版本的Mono能否在x86-64 Linux上运行?如何(以编程方式)检测Mono安装支持哪些平台

在.NET/Windows中,有一个
处理器\u体系结构
环境变量,用于标识正在运行的进程是x32、x64还是IA64

还有一种API方法可以判断Windows操作系统是否支持x86-64

只要Windows x64上有x86版本,就一定会有x64版本的.NET Framework吗?或者有什么方法可以检测机器上的.NET安装支持哪些平台

Mono/Linux或其他非Microsoft的实现呢?x86版本的Mono能否在x86-64 Linux上运行?如何(以编程方式)检测Mono安装支持哪些平台

2010年11月16日增补

我正在开发一种插件系统(好的,我知道有
AddIns
系统,但它太多的是管道程序集)。我想做的是找出在运行过程中可以加载哪些类型的程序集(由平台无关的程序集表示),以及系统在隔离过程中可以执行哪些程序集体系结构。
为系统中的每个体系结构创建测试程序集并尝试启动它的解决方案看起来并不优雅

只要Windows x64上有x86版本,就一定会有x64版本的.NET Framework吗

想想这是不是真的。这意味着,在x64版本的Windows上,可以只安装x86或x64.NET。但是微软没有这样的安装程序,所以只有第三方定制的安装程序才有可能

除了可能违反了MS EULA,我也不太愿意相信这样的安装(它还遗漏了什么?它有没有正确安装的.NET部分?)

由于MS安装是免费使用的,因此似乎没有人愿意参与创建这样一个自定义安装的工作,我得出结论:在x64 Windows上,如果安装.NET只需一个比特数,那么就可以同时安装两个比特数

(注意,如果我没记错的话,这在.NET 2之前不适用,对于1.1和1.0,没有x64.NET。)

只要Windows x64上有x86版本,就一定会有x64版本的.NET Framework吗

想想这是不是真的。这意味着,在x64版本的Windows上,可以只安装x86或x64.NET。但是微软没有这样的安装程序,所以只有第三方定制的安装程序才有可能

除了可能违反了MS EULA,我也不太愿意相信这样的安装(它还遗漏了什么?它有没有正确安装的.NET部分?)

由于MS安装是免费使用的,因此似乎没有人愿意参与创建这样一个自定义安装的工作,我得出结论:在x64 Windows上,如果安装.NET只需一个比特数,那么就可以同时安装两个比特数


(注意,如果我没记错的话,这不适用于.NET 2之前的版本,对于1.1和1.0版本,没有x64.NET。)

检查
环境.Is64BitProcess


另一方面,为什么需要检测到这一点?我能想到的唯一有效的场景是P/Invoke,它已经加载了正确(x86/x64/other)版本的二进制库。此外,可能的体系结构比x86和x64更多:即使将代码限制为Microsoft.Net实现,也可以在安腾上运行。

检查
环境。Is64BitProcess


另一方面,为什么需要检测到这一点?我能想到的唯一有效的场景是P/Invoke,它已经加载了正确(x86/x64/other)版本的二进制库。此外,可能的体系结构比x86和x64更多:即使将代码限制为Microsoft.Net实现,您也可以在安腾上运行。

对于其他平台,请参见此处:


它有一些代码可以更可靠地检测OS X,OS X将自己标识为UNIX。

对于其他平台,请参见此处:

它有一些代码可以更可靠地检测OSX,它将自己标识为UNIX