Convertir ejecutable.NET en ejecutable nativo
compilation native-executable (11)
¿Hay algún enfoque para convertir una aplicación desarrollada en .NET en un ejecutable nativo (se incluyen las fuentes)?
La instalación de todo el marco (hasta .NET Framework 3.5 SP1) lleva mucho tiempo; no siempre las computadoras se actualizan desde Internet. ¿Es posible llamar a NGen para producir ejecutables independientes?
Gracias
Algunos ofuscadores hacen esto, sin embargo, tendrías que hacerlo de antemano (antes de enviarlo a tus usuarios). Un ejemplo es Salamander de remotesoft .
Con .net 3.5 SP1, es posible instalar un subconjunto más pequeño del .NET Framework. Eche un vistazo a esta captura de pantalla: propiedades de Visual Studio Project http://windowsclient.net/sitefiles/1000/wpf/presents/103_4.png
NGen compila las expresiones ex a exes nativas, por lo que no es necesario que se compilen JIT mientras se ejecutan. Sin embargo, aún dependen del marco.
Hay algunas compañías comerciales que proporcionan productos para compilar ensamblados .net en archivos independientes. Thinapp de Xenocode y vmware. Tampoco son baratos.
No, el código NGen''d todavía necesita el marco: solo pre-JITs el código en sus propios ensamblajes. También requiere el marco para el CLR en sí mismo.
Creo que Mono tiene un compilador estático que planean usar para el iPhone. No sé si eso funcionará también en Windows.
Solía haber un producto llamado Thinstall que algunas personas usaban para esto. Ahora se llama ThinApp , básicamente es virtualización de aplicaciones. Es comercial, pero es posible que puedas obtener una versión de prueba.
Personalmente, me preocupa un poco ese producto: en lo que respecta a la implementación, alejarse de la forma convencional de hacer las cosas suena como una receta para muchas llamadas de soporte. Hay un montón de cosas que salen mal. No digo que no funcione, solo que sería cauteloso.
¿Has mirado el .NET 3.5 (SP1) Client Profile ? Eso puede ayudar a reducir un poco los requisitos de instalación.
Puede usar NGen para hacer que su aplicación sea un ejecutable nativo, pero seguirá dependiendo de .Net framework.
Solo necesitará instalar la versión de .NET a la que está apuntando, por ejemplo, .NET1.1 o .NET2.0
Editar : si necesita orientar la versión 3.5, necesitará instalar tanto 2.0 como 3.5
ILMerge (Free) puede combinar varios ensambles en uno, pero no creo que funcione con los tiempos de ejecución del núcleo.
En resumen, creo que si quiere ejecutar programas .NET necesitará el .NET Framework instalado.
Todavía no está disponible, pero el equipo del proyecto Mono está trabajando en un compilador Ahead of Time que hará lo que está buscando. La intención es que Mono funcione en el iPhone (como Unity) pero debería funcionar para todas las plataformas.
Editar: es compatible con Mono x86, pero no estoy seguro de si han incluido la característica que se incluye en las clases dependientes (aunque de una entrevista que escuché, está planificada)
Edición 2: Inclusión de dependencias actualmente es compatible, ¡gracias Dykam!
Hay un producto comercial que dice hacer eso aquí:
http://www.xenocode.com/Obfuscator/
"Implementar aplicaciones .NET de forma segura, sin instalación de .NET Framework"
No tengo idea de cuáles serían los inconvenientes de esto
ThinApp (anteriormente Thinstall) de vmware. Sin embargo, solía ser muy caro.
El único producto que fundamos para resolver el problema en 2007 fue Xenocode Postbuild . Desde ese momento en que utilizamos este producto con éxito, también usamos sus características de virtualización bastante buenas.
El único problema es que la versión que compramos no es compatible con Windows 7 (donde no es necesario instalar .NET Framework para ejecutar su programa compilado con la versión <4.0). Entonces escribí a Xenocode. Ellos respondieron
Para obtener soporte para Win 7, debe actualizar a la versión más nueva de Postbuild (ahora llamado .NET Obfuscator ). Win 7 no es una plataforma compatible para Postbuild 2007.
¿Por qué no Ngen.exe? http://msdn.microsoft.com/en-us/library/6t9t5wcf(v=vs.80).aspx
Convierte .Net Programs
en Native Programs
también y ya lo tienes si tienes el .Net Framework