Haciendo memoria...

Cuando empecé con todo esto del desarrollo, allá por el año 2007 las versiones de los lenguajes de programación de Microsoft, ya sea C# o VB.NET venían siempre de la mano de la versión del .NET Framework. Por ejemplo, quien no recuerda C# 3 que salió en el 2008 junto al .NET Framework 3.5, luego el .NET Framework 4 y C# 4 (Si estas interesado en las versiones del framework y los lenguajes puedes revisar este enlace).

Como olvidar ese logo

Ahora la cosa esta cambiando...

Microsoft en general está cambiando y con ello muchas cosas para los desarrolladores que usamos su plataforma están cambiando. Muchas cosas se están volviendo de código abierto y con ello están recibiendo alguna de sus ventajas, como periodos de entrega mucho más cortos, cada vez se liberan versiones de los Frameworks y productos Microsoft con mayor frecuencia.

Volviendo al tema, uno los cambios que podría decirse que marcó un inicio en cuanto a los lenguajes de programación en Visual Studio fue el anuncio de la liberación del compilador: Rosy.
Roslyn

Con el compilador liberado se han abierto un sin número posibilidades para la optimización de generación de código, de compilado e incluso para mejorar Visual Studio en sí mismo, pero bueno son temas de otro post.

Sabias que podías usar C# para compilar C# en tiempo de ejecución?

A pesar de que suena un poco repetitivo o extraño, existen clases que podemos usar para compilar C# en la misma forma en la que el compilador lo hace cada vez que llamas al comando Build.

CodeDomProvider

Esta clase nos permite definir la forma en la que cualquier lenguaje de programación funciona y es la base para la compilación dinámica en el universo .NET. Cabe mencionar que esta clase no es nueva y existe desde hace mucho tiempo. Si ustedes desean compilar C# entonces necesitan de la clase CSharpCodeProvider.

Uniendo los puntos

Si ya tenemos libre el compilador de C# Roslyn, desde hace mucho tenemos una clase con la que podemos definir la estructura de un lenguaje y de hecho ya existe la C# (CSharpCodeProvider), todo esto junto significa QUE AHORA PODEMOS CAMBIAR LA FORMA EN LA QUE SE COMPILA, ES DECIR ACTUALIZAR NUESTRO LENGUAJE DE PROGRAMACIÓN UTILIZANDO UN NUEVO CodeDomProvider, el cual incluso puede ser instalado utilizando un paquete de Nuget.

Visual Studio Rulez!

¿Desde que versión de .NET puedo usar C# 6/VB 14?

Respuesta corta, desde .NET 4.5 en adelante (recuerden que la versión actual es 4.6.1).

¿Cómo agrego el soporte a C# 6 a mi proyecto en .NET 4.5?

Tenemos dos casos.

A. Si no tengo Visual Studio 2015 Update 1

Empecemos por la forma más complicada.

  1. En primer lugar instalamos el siguiente paquete de Nuget Microsoft.CodeDom.Providers.DotNetCompilerPlatform.

Podemos usar la consola de NuGet y el siguiente comando para instalarlo.

    PM> Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

O podemos buscarlo en el explorador de paquetes e instalarlo.

Nuget
Nuget

  1. Verificamos que el paquete de NuGet haya modificado el archivo de configuración como se muestra a continuación.

B. Si tengo instalado Visual Studio 2015 Update 1

Para los que tenemos Visual Studio 2015 Update 1 el proceso se simplifica aún más. Tenemos en el menú Project, una opción que nos permite activar el soporte para C# 6/VB 14.

  1. Vamos a el menú Project > Enable C# 6/VB 14.

  2. Esto nos abrirá un cuadro de dialogo para elegir a que proyecto de la solución deseamos agregar el soporte.

  3. Damos clic en aceptar y Visual Studio hará la magia :D

Para comprobar que todo funciona correctamente...

Para comprobar que todo funciona correctamente una forma sencilla es con la característica de String Interpolation.
Agregamos, por ejemplo, el siguiente código:

        var blog = "somostechies.com";
        var sentence = $"{blog} es un gran blog.";
        Debug.WriteLine(sentence);

Y luego solo comprobamos que nuestra aplicación compila correctamente ;).

Y eso es todo, así pueden probar las nuevas características del lenguaje en sus aplicaciones con .NET 4.5 en adelante ;) espero disfruten todas las mejoras de C# 6. Nos vemos en el siguiente post.