Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.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
在x86系统上编译C#.NET x64二进制文件_C#_.net_Mono_Cross Compiling - Fatal编程技术网

在x86系统上编译C#.NET x64二进制文件

在x86系统上编译C#.NET x64二进制文件,c#,.net,mono,cross-compiling,C#,.net,Mono,Cross Compiling,我有一个C#项目,其中包含对闪烁网的引用。不幸的是,闪烁网喜欢检测机器的体系结构,并根据运行的体系结构加载本机DLL。这意味着我的项目必须预编译成x86和x64版本(由于上述检测,我不能使用任何CPU) 问题是我的构建服务器仅为x86。有没有办法在x86机器上以x64模式编译.NET程序集?据我所知,切换只会强制计算机加载所需体系结构的程序集,并且在编译时不会实际输出任何依赖于体系结构的代码,但是,在构建服务器上根据Mono 2.10.6进行编译时,会出现以下错误: 错误CS0016:无法写入文

我有一个C#项目,其中包含对闪烁网的引用。不幸的是,闪烁网喜欢检测机器的体系结构,并根据运行的体系结构加载本机DLL。这意味着我的项目必须预编译成x86和x64版本(由于上述检测,我不能使用任何CPU)

问题是我的构建服务器仅为x86。有没有办法在x86机器上以x64模式编译.NET程序集?据我所知,切换只会强制计算机加载所需体系结构的程序集,并且在编译时不会实际输出任何依赖于体系结构的代码,但是,在构建服务器上根据Mono 2.10.6进行编译时,会出现以下错误:

错误CS0016:无法写入文件“闪烁网”,原因:AMD64


我无法使用CorFlags.exe更改PE头,因为这是基于Linux的生成服务器。有什么方法可以做到这一点吗?

我最终通过将项目切换回任何CPU解决了这个问题。由于无论.NET设置如何,斯金特拉都只能在本机体系结构中工作,因此我必须在我的机器上以64位运行它。最初,我打算强制体系结构为32位以进行编辑并继续,这导致了对闪烁体如何检测体系结构的混淆


事实上,斯金塞拉将强制自己使用本机架构,但是如果您在任何CPU下构建和运行.NET应用程序,它都可以正常工作。此外,由于我无法在32位模式下运行带有闪烁体的.NET应用程序(用于编辑和继续工作),因此在我的计算机上强制使用64位模式也没有任何好处。

毫无意义,比特数由主启动程序集(EXE)决定,而不是由闪烁体等库决定。使用任何CPU。听起来他的项目是主要的启动程序集。如果在x64机器上以x86启动,闪烁体将自己进行检测,找到x64,尝试将本机x64 DLL加载到x86应用程序中,但失败。实际上,闪烁体中的一个缺陷是它没有检测到当前进程的架构,而不是机器。根据mono文档,
--aot
选项没有将平台作为参数。目前看来不可能。