son net lenguaje las language framework cuales compilado common codigo caracteristicas administrado .net visual-studio compiler-construction

.net - lenguaje - net framework clr



¿Es posible compilar el código.NET IL para el código de máquina? (12)

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


¿Es posible compilar el código .NET IL para el 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, este código de máquina IL -> se realiza por separado en cada máquina de instalación, por lo que puede optimizarse para esa máquina en particular.

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

No, para todos los efectos, no puedes hacer esto. Las soluciones provisionales de terceros pueden funcionar en algunos escenarios, pero para entonces ya no lo consideraría como "código administrado" o ".NET".


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

Sin embargo, puede utilizar ClickOnce o Windows Installer para implementarlo de modo que el marco que falta no sea un problema tan grande: podría decirle al instalador que descargue el Framework e instálelo.



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


Otro producto (costoso y patentado, licencias a partir de $ 1599) que puede hacer esto es Xenocode Postbuild . No lo he usado yo mismo, con lo que cuesta el producto nacional bruto de un pequeño país africano y todo ...



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

También debe enviar los ensamblajes de 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 Via C #:

Además, los ensamblados precompilados con Ngen suelen ser más lentos que los ensamblados JIT porque el compilador JIT puede optimizar a la máquina objetivo (registros especiales de 32 bits a 64 bits, etc.), mientras que NGEN solo generará una compilación de línea de base.

EDITAR:

Existe algún debate sobre la información anterior de CLR Via C #, ya que algunos dicen que se requiere que ejecute Ngen en la máquina de destino solo como parte del proceso de instalación.


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


Hay IL2CPU para la parte de compilación.




Si solo le preocupa el tamaño de la implementación del Marco, puede leer sobre esto .