2012-03-20 13 views
8

Espero que las actualizaciones de nivel de marco (como async) no se puedan compilar para trabajar en un marco inferior, pero se compilarán diferencias (como el alcance variable de bucle foreach) funcionan correctamente cuando se compila con C# 5.0 contra .net 4.0? ¿Alguien puede proporcionar una lista definitiva? Qué características de C# 5.0 se pueden compilar para ejecutar en .net 4.0

Editar:

En lugar de pedir una lista definitiva, que me retracto de ser mucho pedir, ¿alguien capaz de responder si los cambios en el nivel del compilador (como foreach ámbito de las variables) se comportarán de manera diferente cuando se usa el C# 5.0 contra una versión de marco anterior.

+2

asíncrono funciona en 4.0, http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=9983, es solo un cambio de compilador, el il resultante se ejecuta en .net 4.0 –

+0

Normalmente, la sintaxis más reciente se limitará a la "corriente " marco de referencia. Las características como la versión (actual) del Async CTP continuarán funcionando. Microsoft, por supuesto, aún no sugiere usar Async CTP en el código de producción. Todo lo que es una característica directa de 4.5 no será portado por Microsoft (no sirve para nada) en este punto. No creo que estén cambiando el compilador como lo hicieron con el cambio de .NET Framework 3.5 SP1 –

Respuesta

4

Todas ellas. No hay nada que realmente requiera nueva compatibilidad con runtime - algunas funciones solo requieren nuevas bibliotecas. Pero no es necesario compilarlo contra las bibliotecas .NET 4.5; también puede proporcionar su propia implementación de la misma API.

Por ejemplo, agregue el siguiente archivo a su proyecto para habilitar el soporte para asíncrono/esperan en .NET 4.0: proyectos https://gist.github.com/1961087

No he probado con los atributos de la persona que llama información, pero estoy bastante seguro esos funcionarán incluso si los defines tú mismo en lugar de usar los que vienen con .NET 4.5.

El mismo truco funciona con class ExtensionAttribute en C# 3 de utilizar métodos de extensión con .NET 2.0, e incluso se puede utilizar los LINQ a objetos completos en .NET 2,0 (LinqBridge)

3

En cuanto a las características, cualquier sintaxis que funcione en 4.0 se puede compilar en 4.0, incluso si la produjo originalmente en 5.0. Visual Studio 11 le informará el código que no funcionará en 4.0 si cambia la versión de .NET Framework en las propiedades del proyecto, entonces esa sería mi guía. Si compilar a 4.0 es un problema, use VS 11 para editar, pero deje la compatibilidad del marco en 4.5.

Es probable que haya un FUD más nuevo que compilará una versión anterior. Esto fue cierto con encarnaciones anteriores, pero es acertado o imperdible usar nueva sintaxis e intentar compilar al revés.

No conozco una lista definitiva de las características del lenguaje (palabras clave, etc.) y no he encontrado ninguna con la búsqueda. Tampoco he visto una especificación de lenguaje 4.5 en la naturaleza.

+2

Es .NET 4.5 y C# 5.0. El OP preguntó explícitamente sobre C# 5.0, por lo que empleó la versión correcta. –

+0

Corregido. Gracias. –

+0

@GregoryABeamer Gracias por la respuesta, parte de mi pregunta principal (supongo) es realmente si el nivel del compilador cambia (como foreach varaible scope) 'compilará hacia abajo' al anterior .NET O si compila contra una versión anterior del framework cambia fuera de estas características mejoradas. –

Cuestiones relacionadas