C#2.0 code consuming assemblies compilado con C#3.0
.net .net-3.5 (3)
rendimiento, var, sintaxis lambda, tipos anon e inicializadores son todos inteligencia del compilador. El IL que producen es compatible cruzado.
Menor punto de recolección de liendres, pero el rendimiento fue una característica 2.0 de todos modos.
Esto debería estar bien ya que el CLR no ha cambiado realmente?
Los cuadros que ejecutan el código C # 2.0 han desplegado .NET 3.5.
El trasfondo es que tenemos un servicio de Windows (exe .NET 2.0 construido con VS2005, implementado en ~ 150 servidores) que carga dinámicamente ensamblajes (casi como complementos) para completar varios elementos de trabajo que se le solicitan. Cada vez que implementamos una nueva versión de la lógica del bus, simplemente colocamos los ensamblajes en un servidor FTP y el servicio de Windows sabe cómo verificar, capturar y almacenar las últimas versiones. Los nuevos ensamblados ahora se crean usando VS2008 y apuntar .NET 2.0, sabemos que funciona bien. Sin embargo, nos gustaría comenzar a aprovechar las características del lenguaje C # 3.0 como LINQ y apuntar a los ensamblados contra .NET 3.5 sin tener que construir e implementar una nueva versión del servicio de Windows.
C # 3 y .Net 3.5 agrega nuevos conjuntos, pero el IL no se modifica.
Esto significa que con los ensamblados .Net 2 puede compilar y usar C # 3, siempre que no use Linq o cualquier otra cosa que haga referencia a System.Linq o System.Core
yield
, var
, sintaxis lambda, tipos anon e inicializadores son todos inteligencia del compilador. El IL que producen es compatible cruzado.
Si puede hacer referencia a los nuevos conjuntos para 3.5, todo debería funcionar.
No hay una nueva versión de ASP.Net, aún debería ser 2.0.50727, pero aún debe compilar para 3.5
Esto es algo interesante Estuve mirando a LinqBridge ayer después de que alguien en este foro me lo sugirió y están haciendo algo similar.
Me parece extraño que Microsoft haya llamado a los frameworks 2.0, 3.0 y 3.5 cuando compilan todos para producir el mismo IL requerido por el 2.0 CLR. Hubiera pensado que agregar versiones a 2.0 hubiera tenido más sentido aunque supongo que también es difícil hacer que la gente sepa que hay diferentes versiones de tiempos de ejecución, compiladores e idiomas.