Hay un programa escrito completamente en C# que apunta a .NET Framework 2.0. ¿Hay alguna manera de que yo pueda de alguna manera compilar (traducir) EXE administrado a uno nativo para que pueda ser .NET-agnóstico? Sé que probablemente haya productos comerciales para ese fin ... pero son un poco caros.Conversión de la aplicación .NET al código nativo x86
El problema es que debemos implementar el programa en computadoras con Windows XP sin .NET Framework instalado. También es necesario que el tamaño del programa no supere los 500 Kb (1 Mb máximo) para que se descargue desde el servidor web (ahora el tamaño es de 255 Kb). Es por eso que no hay forma de que podamos conectar un .NET FX completo (o incluso uno reducido) al archivo del programa descargado.
Obviamente, es un terrible error de ingeniería de software que debería haberse detectado y evitado antes, por lo que podríamos usar tecnologías nativas como C++ en su lugar.
Hemos intentado por ahora Mono de Novell: una implementación de código abierto para .NET Framework para Linux, MAC y Windows. Mono consta de compiladores de C#, IDE, runtime (CLR) y ensamblajes de Class Library (como System.dll y mscorlib.dll, muy parecidos a los ensamblados de biblioteca de clases de .NET instalados en GAC). Lo que tratamos de hacer es ubicar los archivos CLR y enviarlos junto con el archivo de nuestro programa y algunas asambleas. De esta forma, el programa se puede invocar ejecutando "mono program.exe" (símbolo del sistema) en la computadora de un usuario. Además de la inconveniencia de tal uso para el usuario final, los archivos CLR (mono.exe y mono.dll) resultaron ser de aproximadamente 2.5 Mb en total, que es mucho mayor que los 500 Kb o incluso 1 Mb deseados.
Por lo tanto, hemos dejado sin otra opción que la de traducir nuestra aplicación .NET a un nativo por un compilador, sin embargo, la pregunta sigue siendo - lo compilador debemos utilizar y dónde podría encontrar uno que ...
Por el momento, me he topado con un proyecto de Singularity OS de Microsoft Research. Es un sistema operativo de investigación de código abierto que está escrito en código administrado (al menos en parte). El sistema operativo Singularity incluye un compilador de Bartok que el sistema operativo usa para traducir un programa administrado a uno nativo (x86 de 32 bits). Cabe señalar que Bartok no puede traducir todos los aspectos de .NET 2.0 a un código nativo, pero la mayoría de ellos. Sin embargo, todavía no he aprendido a usar Singularity ...
Le agradecería mucho si pudiera proporcionarme algunos consejos útiles sobre el problema, su propia experiencia con Singularity OS y Bartok Compiler u otro acercamiento al problema que he pasado por alto y formas de resolverlo.
¡Muchas gracias de antemano!
Finalmente, utilizando la función completa de AOT de Mono (siguiendo el consejo de Callum Rogers), he logrado producir un programa.exe.dll que carece de un encabezado CLI. Así que me parece una dll nativa. Sin embargo, no puedo entender cómo convertir ese dll en exe o hacerlo operativo. También este dll no parece exponer ninguna función de interés, como la función principal.
les víctima: http://stackoverflow.com/questions/45702/is-there-some-way-to-compile-a-net-application-to-native- código –
¿Está intentando hacer esta plataforma multiplataforma, o simplemente eliminar las dependencias de las bibliotecas de marcos? –
Solo trato de eliminar las dependencias de .NET Framework para que pueda ejecutarse en Windows XP sin tener instalado .NET FX. – Vlad