Pregunta

Me gustaría distribuir mis programas .NET sin el marco .NET. ¿Es posible compilar un programa .NET en el código de máquina?

¿Fue útil?

Solución

Sí, puede precompilar usando Ngen.exe, sin embargo, esto no elimina la dependencia de CLR.

También debe enviar los ensamblados IL también, el único beneficio de Ngen es que su aplicación puede iniciarse sin invocar el JIT, por lo que obtiene un tiempo de inicio realmente rápido.

De acuerdo con CLR vía C #:

  

Además, los ensamblajes precompilados utilizando   Los Ngen suelen ser más lentos que JIT'ed   ensambla porque el compilador JIT   puede optimizar a la máquina de objetivos   (¿32 bits? ¿64 bits? ¿Registros especiales?   etc.), mientras que NGEN solo producirá un   compilación de referencia.

EDITAR:

Existe cierto debate sobre la información anterior de CLR a través de C #, ya que algunos dicen que debe ejecutar Ngen en la máquina de destino solo como parte del proceso de instalación.

Otros consejos

Remotesoft tiene uno: Salamander .NET Linker

Sin embargo, no tengo experiencia con eso.

Hay algunas herramientas de terceros que hacen esto, por ejemplo,

Otro producto (costoso y patentado, las licencias comienzan en $ 1599) que puede hacer esto es Xenocode Postbuild . Sin embargo, no lo he usado, ya que cuesta el producto nacional bruto de un pequeño país africano y todo ...

  

¿Es posible compilar código .NET IL   al código de máquina?

Sí, pero .NET Framework lo hace por usted en tiempo de ejecución (predeterminado) o en el momento de la instalación (ngen). Entre otras razones, esta IL - > el código de máquina se realiza por separado en cada máquina de instalación para que pueda optimizarse para esa máquina en particular.

  

Me gustaría distribuir mi .NET   programas sin el marco .NET.   ¿Es posible compilar un .NET?   programa para codificar la máquina?

No, a todos los efectos, no puede hacer esto. Las soluciones alternativas de terceros pueden funcionar en algunos escenarios, pero para entonces realmente no lo consideraría "código administrado". o ".NET" más.

¡Sí, ahora puedes! Recientemente, Microsoft anunció .NET Native , una pieza de tecnología que compila su aplicación con .NET Native runtime (lo llaman MRT) en un binario (en realidad, una biblioteca ejecutable y una dinámica).

Ver enlaces: http: //blogs.msdn .com / b / dotnet / archive / 2014/04/02 / anuncing-net-native-preview.aspx http://blogs.msdn.com/b /dotnet/archive/2014/04/24/dotnetnative-performance.aspx

Hay IL2CPU para la parte de compilación.

No creo que sea posible. Puede hacer un ensamblaje prejitted pero aún necesita el marco.

Si solo le preocupa el tamaño de la implementación de Framework, puede leer en esto .

Creo que no deberías: esa es la tarea del compilador JIT.

Sin embargo, podría usar ClickOnce o Windows Installer para implementarlo de modo que el marco faltante no sea un problema tan grande: podría decirle al instalador que descargue el Marco e instale.

Mira el proyecto MONO: comando mono con la opción --aot. http://www.mono-project.com/AOT

Siempre pensé que sería genial compilar C # a código de máquina directamente sin la dependencia de CLR ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top