Jun*_*des 13 .net c# mono cross-compiling
我有一个C#项目,其中包含对ScintillaNET的引用.不幸的是,ScintillaNET喜欢检测机器的架构并根据运行的架构加载本机DLL.这意味着我的项目必须预编译为x86和x64版本(由于上述检测,我无法使用任何CPU).
问题是我的构建服务器只是x86.有没有办法在x86机器上以x64模式编译.NET程序集?据我所知,切换只是强制计算机加载所需架构的程序集,并且实际上并不在编译时输出任何与架构相关的代码,但是,在构建服务器上的Mono 2.10.6下进行编译时得到如下错误:
"错误CS0016:无法写入文件`ScintillaNet',原因:AMD64"
我不能使用CorFlags.exe来更改PE头,因为这是一个基于Linux的构建服务器.有没有办法做到这一点?
我最终通过将项目切换回任何 CPU 来解决这个问题。由于无论 .NET 设置如何,Scintilla 都只能在本机体系结构中工作,因此我必须在我的计算机上将其作为 64 位运行。最初,我打算将架构强制为 32 位以进行“编辑并继续”,这导致对 Scintilla 如何检测架构的混乱。
实际上,Scintilla 会强制自己采用本机架构,但如果您在任何 CPU 下构建和运行,.NET 应用程序都将正常工作。此外,由于我无法在 32 位模式下运行带有 Scintilla 的 .NET 应用程序(用于编辑并继续工作),因此在我的计算机上强制使用 64 位模式也没有任何优势。