2008-08-13 13 views
11

Esto debería estar bien ya que la CLR no ha cambiado realmente?C# 2.0 compilaciones de código compiladas con C# 3.0

Las cajas que ejecutan el código C# 2.0 tienen tenían .NET 3.5 desplegado.

El trasfondo es que tenemos un servicio de Windows (exe .NET 2.0 construido con VS2005, implementado a ~ 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.

Respuesta

7

C# 3 y .Net 3.5 agrega nuevos ensamblajes, pero el IL no se modifica.

Esto significa que con .Net 2 asambleas puede compilar y usar C# 3, siempre y cuando no se utiliza LINQ o cualquier otra cosa que hace referencia a System.Linq o System.Core

yield, var, la sintaxis lambda, los tipos anon y los 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 - que todavía debe ser 2.0.50727 - pero aún debe compilar para 3,5

1

Esto es algo interesante. Estuve mirando LinqBridge ayer después de que alguien en este foro me lo sugirió y están haciendo algo similar.

Me resulta extraño que Microsoft haya llamado a los frameworks 2.0, 3.0 y 3.5 cuando todos se compilan 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 entienda el hecho de que existen diferentes versiones de tiempos de ejecución, compiladores e idiomas. rendimiento

2

, var, la sintaxis lambda, tipos anon y inicializadores son todos compilador astucia. La IL que producen es cross-compatible.

Menor punto de recogida de liendres, pero el rendimiento fue una característica 2.0 de todos modos.

Cuestiones relacionadas