visual - doc c#
¿Puede compilar C#para que no necesite.NET Framework en tiempo de ejecución? (8)
¿Es posible forzar al compilador de C # a sacar todas las llamadas referenciadas del marco y empaquetarlas en dlls o incluso en un solo ejecutable?
Me gusta escribir aplicaciones rápidas "únicas" con C #, sin embargo, no quiero tener que instalar toda la infraestructura en la máquina de destino una vez que esté lista para funcionar.
Ahora es posible compilar C # con el código nativo usando Microsoft .NET Native: https://msdn.microsoft.com/en-us/library/dn584397(v=vs.110).aspx
Se compila automáticamente la versión de lanzamiento de las aplicaciones que están escritas en código administrado (C # o Visual Basic) y que se dirigen a .NET Framework y Windows 10 a código nativo.
...
Para los usuarios de sus aplicaciones, .NET Native ofrece estas ventajas:
• Tiempos de ejecución rápidos
• Tiempos de arranque constantemente rápidos
• Bajo costo de implementación y actualización
• Uso optimizado de la memoria de la aplicación
Esto solo funciona con Visual Studio .NET 2015.
Algunas características de C # están vinculadas a las interfaces de .NET framework.
Por ejemplo:
yield return
requiere la interfaz IEnumerable
using (x) {}
requiere la interfaz IDisposable
Eche un vistazo al perfil de cliente .NET. Esto le permitirá empaquetar una instalación mínima en la máquina cliente ... que luego se actualizará mediante la actualización de Windows al marco completo.
Esto depende, por supuesto, de que su aplicación solo use bibliotecas que están contenidas en el perfil del cliente ...
Alguna información aquí: http://blogs.windowsclient.net/trickster92/archive/2008/05/21/introducing-the-net-framework-client-profile.aspx
Esta dependencia que desafortunadamente se rompe o falta en el mundo real es una gran razón por la cual C # no ha tenido una adopción más amplia. Por otro lado, la mayoría del desarrollo tiene dependencias. Mire C ++ y Java, por ejemplo.
No creo que realmente nos alejemos de estos problemas de dependencia pronto, así que le recomiendo que si desea usar C #, haga un contenedor para la instalación que verifique la dependencia de la versión de .NET Framework que necesita, y si falta notifique al usuario que lo necesita para ejecutar su aplicación.
Imposible. Su aplicación "compilada" C # es un lenguaje que interpreta .Net CLR (debería haber dicho JITed, Reads IL, compila a código nativo y luego invoca el código nativo compilado) en tiempo de ejecución.
FYI .net 2.0 es una instalación estándar en XP SP2 y Vista, por lo que no tendrá que pagar una multa.
Podrías mirar en mono, pero esto todavía implica ejecutar algún tipo de framework en tu máquina objetivo.
Mira mkbundle usando Mono.
Se dice que es posible, utilizando herramientas de terceros como http://www.remotesoft.com/linker/
Usted hace una pregunta cargada. C # es simplemente un lenguaje y no requiere .NET Framework. El proceso de compilación requiere un compilador, que puede o no tener una dependencia de .NET Framework (el compilador de C # de Microsoft no está escrito en código nativo). Su programa necesitará hacer referencia a algún ensamblaje donde se puedan encontrar tipos, clases y métodos para su uso. Puede eliminar system.dll y mscorlib.dll de su lista de referencias y hacer referencia a sus propios ensamblados. Por lo tanto, puede evitar dependencias en .NET Framework si realmente trabaja en ello. Pero al final, a menos que tenga un compilador de C # que compila programas con código nativo, todavía tiene una dependencia en el CLR.
Esa es una forma muy técnica de decir ... casi nada. Pero responde tu pregunta. :) Sin embargo, más útil desde el punto de vista práctico es cómo hacer que tus programas C # se ejecuten con un mínimo de dependencias. mkbundle from mono realmente te permitirá compilarlo todo en un .exe virtualmente sin dependencias.
Pero si desea seguir con Microsoft .NET Framework, puede lograr un espacio mucho más ligero y una instalación más rápida de las dependencias que comúnmente necesita utilizando el perfil de cliente de .NET 3.5 SP1. Puede leer sobre esto aquí: http://msdn.microsoft.com/en-us/library/cc656912.aspx