Tengo un proyecto C# que contiene una referencia a ScintillaNET. Desafortunadamente, a ScintillaNET le gusta detectar la arquitectura de la máquina y carga la DLL nativa en función de la arquitectura en ejecución. Eso significa que mi proyecto debe estar precompilado en las versiones x86 y x64 (no puedo usar ninguna CPU debido a la detección anterior).Compilación de un binario C# .NET x64 en un sistema x86
El problema es que mi servidor de compilación es solo x86. ¿Hay alguna forma de que pueda compilar un ensamblado .NET en modo x64 en una máquina x86? Por lo que yo sé, el alternar simplemente obliga a la computadora a cargar el ensamblaje para la arquitectura requerida y en realidad no genera ningún código dependiente de la arquitectura en tiempo de compilación, sin embargo, al compilar bajo Mono 2.10.6 en el servidor de compilación I obtener errores tales como:
"CS0016 de error: no se pudo escribir en el archivo` ScintillaNet', causa: AMD64"
no puedo utilizar CorFlags.exe para cambiar los encabezados PE, ya que es un Linux basada servidor de compilación ¿Hay alguna manera de hacer esto?
No tiene sentido, la bitness está determinada por el ensamblaje de inicio principal (EXE), no por una biblioteca como ScintillaNET. Use AnyCPU. –
Parece que su proyecto es el ensamblaje principal de inicio. Si comienza como x86 en una máquina que es x64, Scintilla hará su propia detección, encontrará x64, intentará cargar x64 dlls nativos en la aplicación x86 y fallará. Realmente, es un error en Scintilla que no detecta la arquitectura del proceso actual, en lugar de la máquina. – antiduh
De acuerdo con la documentación mono, la opción '--aot' no toma la plataforma como parámetro. No parece posible a partir del momento. –