2010-08-18 11 views
5

entorno de desarrollo: - VS2010 - Net Framework 4.0, 3.5, 2.0¿Puedo usar todas las características de C# 4.0 en un proyecto dirigido a .Net 3.5?

puesta en escena y entornos de producción: - Net Framework 3.5, 2.0

El proyecto que estoy trabajando es en la orientación .Net Marco 3.5. Y hoy utilicé la característica de parámetros opcionales, que es nueva para C# 4, en este proyecto y funcionó bien. Creo que VS2010 está utilizando el compilador C# 4 y está compilando el método con parámetros opcionales para los correspondientes métodos sobrecargados en IL.

Quiero saber si puedo usar todas las funciones nuevas de C# 4 también.

+0

+1. Solo lo intenté, y un nuevo proyecto 3.5 permitió parámetros opcionales en un método. Gran atrapada! –

+4

posible duplicado de [¿Qué características de C# 4.0 se pueden utilizar mientras se está enfocando el tiempo de ejecución de .NET 3.5?] (Http://stackoverflow.com/questions/245306/what-c-4-0-features-can-be-used -mientras sigue apuntando a la red-3-5-tiempo de ejecución) –

Respuesta

7

No puede usar es la función dynamic. Esto se basa en el tiempo de ejecución de C# y las DLL de DLR, que solo están disponibles en la versión 4.0 de .Net Framework. Las versiones del DLR están disponibles para 3.5, pero no creo que sean compatibles con el requerido por el compilador de C#.

Además, no puede usar NoPIA/Tipos de interoperabilidad incrustados en un escenario dirigido hacia abajo. Esta característica requiere soporte CLR que se agregó en 4.0.

Lo bueno de la orientación hacia abajo en Visual Studio 2010 es que no tiene que conocer todas las limitaciones. Si sus proyectos están configurados para reducir el objetivo 3.5 y usa una función incompatible, Visual Studio producirá un error.

+0

Creo que usted tampoco puede usar contra-varianza y contradicción? ¿O la 3.5 CLR felizmente jugará junto con eso? – Timwi

+0

AFAIK la VM 2.0 ya contenía soporte para eso. – Dykam

+0

@Timwi, @Dykam tiene razón en que CLR 2.0 ya tenía soporte para la varianza de contra y contra. Fue más una corrección de errores para el lenguaje C# y VB.Net. – JaredPar

1

Me encontré con esto hace un par de semanas en realidad. Utilicé parámetros opcionales aunque el proyecto apuntaba a .net 3.5. Debe tener mucho cuidado con esto porque si instala la aplicación en una computadora que solo tiene instalado el tiempo de ejecución .net 3.5, entonces su programa no se ejecutará. En mi caso, utilicé los parámetros opcionales y el servidor de compilación nocturno solo tenía 3.5 instalado por lo que la compilación falló.

+3

Es posible que su proyecto no haya podido * compilar * utilizando 3.5, pero si puede compilarlo correctamente utilizando 4 pero * como objetivo 3.5 *, entonces el código compilado debería * ejecutarse * en 3.5 con bastante satisfacción. – LukeH

Cuestiones relacionadas