2009-07-27 18 views
15

¿Hay algún enfoque para convertir una aplicación desarrollada en .NET en un ejecutable nativo (se incluyen las fuentes)?Convertir ejecutable .NET en ejecutable nativo

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

+0

puede implementar el .NET Framework con el instalador para su aplicación: http://stackoverflow.com/questions/ 626525/create-setup-project-that-includes-net-framework-3-5-sp1 – Greg

Respuesta

9

No, código NGen'd todavía necesita el marco - sólo pre-JIT el código en sus propias asambleas. 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 al despliegue, alejarse de la manera 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.

+0

Thinstall fue traído por VMware y ahora se llama "ThinApp" - http://www.vmware.com/products/thinapp/ –

+0

Gracias Simon - se actualizará. –

12

No está disponible todavía, pero el equipo del proyecto Mono está trabajando en un Ahead of Time compiler 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: Lo hace apoyar x 86 Mono, pero no estoy seguro de si se han incluido la característica de que los paquetes de clases dependientes todavía (aunque de una entrevista que he oído, que está previsto)

Edición 2 : Incluyendo dependencias actualmente es compatible, gracias Dykam!

+0

El aoto ya funciona por un tiempo. No entiendo lo que quieres decir con clases dependientes. Si quiere decir incluir dll referenciados, eso seguramente es compatible, ya que el bcl debe compilarse también en el ejecutable resultante. Tenga en cuenta que la reflexión y los relacionados no están disponibles. – Dykam

+0

Gracias Dykam. Pudo haber sido que la optimización de ese proceso (es decir, que solo incluye clases y/o métodos necesarios) se mencionó como que no estaba listo. –

+0

FYI, creo que la entrevista que mencioné fue parte de este episodio de Hanselminutes: http://www.hanselminutes.com/default.aspx?showID=186 –

3

Puede utilizar NGen para hacer que su aplicación sea un ejecutable nativo, pero seguirá dependiendo del .Net framework.

+2

¿Por qué se modificó esta votación? La información es correcta –

+0

Creo que no podemos llamarlo "ejecutable nativo" mientras "sigue siendo dependiente" del .NET Framework. – lmsasu

+2

Es un archivo ejecutable nativo porque contiene código nativo, pero todavía tiene dependencias en bibliotecas externas. –

3

NGen compila las copias 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. Xenocode y vmware's Thinapp. Tampoco son baratos.

1

Algunos ofuscadores hacen esto, aunque antes tendrías que hacerlo de antemano (antes de enviarlo a tus usuarios). Un ejemplo es remotesoft's Salamander.

1

Solo necesitará instalar la versión de .NET a la que se dirige, p. .NET1.1 o .NET2.0

Editar: Si es necesario apuntar a la versión 3.5, necesitará instalar ambos 2.0 y 3.5

ILMerge (Gratis) 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 desea ejecutar programas .NET necesitará el .NET Framework instalado.

+0

.NET 3.5 son bibliotecas en la parte superior del framework .NET 2.0. – ZippyV

+0

Sí, creo que tiene razón 1.1 y 2.0 están separados, pero 3.5 agregó bibliotecas extra a 2.0 – Frozenskys

1

No es un producto comercial que pretende hacer eso aquí:

http://www.xenocode.com/Obfuscator/

"Implementar aplicaciones .NET de forma segura, sin instalar .NET Framework"

No hay idea de cuáles serían los inconvenientes de esto aunque

+1

¿El precio? lol. –

+0

¡Probablemente! No quería crear un inicio de sesión solo para averiguar cuál era el precio, por lo que debe ser mucho. –

1

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

Con el fin de obtener apoyo para Win 7 debe actualizar a la versión más reciente de Postbuild (ahora llamada Obfuscator). Win 7 no es una plataforma compatible para Postbuild 2007.