¿Cómo habilitar la función C # 6.0 en Visual Studio 2013?


Estaba revisando las últimas características introducidas en C # 6.0 y solo seguí un ejemplo de auto property initializer,

class NewSample
{
    public Guid Id { get; } = Guid.NewGuid();
}

Pero mi IDE no reconoció la sintaxis.

Me pregunto cómo podría habilitar C# 6.0 en Visual Studio 2013. El marco objetivo que estoy utilizando es 4.5.1.

Author: Carthic, 2014-11-23

6 answers

Información para versiones preliminares obsoletas:

De acuerdo con este es solo una instalación e ir para Visual Studio 2013:

De hecho, instalar el compilador C# 6.0 de esta versión implica poco más que instalar una extensión de Visual Studio 2013, que a su vez actualiza los archivos de destino de MSBuild.

Así que simplemente obtener los archivos de https://github.com/dotnet/roslyn y estás listo para ir.

Usted tiene que saber que es un versión obsoleta de las especificaciones implementadas allí, ya que ya no actualizan el paquete para Visual Studio 2013:

También puede probar la Vista previa del usuario final de April, que se instala en la parte superior de Visual Studio 2013. (nota: esta vista previa VS 2013 está bastante desactualizada y ya no se actualiza)

Así que si quieres usar la última versión, tienes que descargar el Visual Studio 2015.

 62
Author: Patrick Hofman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-14 16:16:01

Bajo VS2013 puede instalar los nuevos compiladores en el proyecto como un paquete nuget. De esa manera no necesita VS2015 o un servidor de compilación actualizado.

Https://www.nuget.org/packages/Microsoft.Net.Compilers /

Install-Package Microsoft.Net.Compilers

El paquete le permite usar/construir código/sintaxis de C# 6.0. Debido a que VS2013 no reconoce de forma nativa la nueva sintaxis de C# 6.0, mostrará errores en la ventana del editor de código, aunque compilará bien.

Usando Resharper, obtenga líneas onduladas en las características de C # 6, pero la bombilla le da la opción de 'Habilitar el soporte de C # 6.0 para este proyecto' (configuración guardada en .DotSettings).

Como mencionó @stimpy77: para soporte en MVC Razor views necesitará un paquete adicional (para aquellos que no lean los comentarios)

Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

Si desea soporte completo de C# 6.0, deberá instalar VS2015.

 175
Author: David De Sloovere,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-11 17:40:54

Vale la pena mencionar que el tiempo de compilación se incrementará para los usuarios VS 2015 después de :

Install-Package Microsoft.Net.Compilers

Aquellos que están usando VS 2015 y tienen que mantener este paquete en sus proyectos pueden corregir el aumento del tiempo de compilación.

Edita el archivo packages\Microsoft.Net.Compilers.1.2.2\build\Microsoft.Net.Compilers.props y límpialo. El archivo debería tener el siguiente aspecto:

<Project DefaultTargets="Build" 
         xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
</Project>

Hacerlo obliga a que un proyecto se construya como estaba antes de agregar Microsoft.Net.Compilers paquete

 4
Author: Ashot Muradian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-24 18:27:52

Muchas de las respuestas aquí fueron escritas antes de que Roslyn (los compiladores de código abierto.NET C# y VB) pasaran a. NET 4.6. Por lo tanto, no le ayudarán si su proyecto se dirige, por ejemplo, a 4.5.2 como lo hizo el mío (heredado y no se puede cambiar).

Pero puedes tomar una versión anterior de Roslyn de https://www.nuget.org/packages/Microsoft.Net.Compilers e instalar que en lugar de la última versión. Usé 1.3.2. (He intentado 2.0.1 - que parece ser la última versión que se ejecuta en. NET 4.5, pero no pude compilarlo*.) Ejecute esto desde la consola del Administrador de paquetes en VS 2013:

PM> Install-Package Microsoft.Net.Compilers -Version 1.3.2

A continuación, reinicie Visual Studio. Tuve un par de problemas al principio; necesita establecer la versión de C# de nuevo a predeterminado (C#6.0 no aparece en la lista de versiones, pero parece que se ha hecho el predeterminado), luego limpiar, guardar, reiniciar VS y recompilar.

Curiosamente, no tenía ningún error de IntelliSense debido a las características de C#6.0 utilizadas en el código (que eran la razón para querer C # 6.0 en primer lugar).

* la versión 2.0.1 arrojó error El "Microsoft.CodeAnalysis.Tareas de construcción.La tarea Csc no se pudo cargar desde el ensamblado Microsoft.Construir.Tarea.CodeAnalysis.DLL. No se pudo cargar el archivo o el ensamblaje 'Microsoft.Construir.Utilidad.Core, Version = 14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' o una de sus dependencias. El sistema no puede encontrar el archivo especificado. Confirmar que la declaración es correcta, que la asamblea y todos sus las dependencias están disponibles, y que la tarea contiene una clase pública que implementa Microsoft.Construir.Marco.ITask.

UPDATE Una cosa que he notado desde la publicación de esta respuesta es que si cambia cualquier código durante la depuración ("Editar y continuar"), le gustará encontrar que su código C#6.0 se mostrará repentinamente como errores en lo que parece revertir a un entorno pre-C#6.0. Esto requiere reiniciar la sesión de depuración. MUY molesto especialmente para aplicaciones web.

 3
Author: SteveCinq,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-14 19:48:47

Es posible usar funciones completas de C# 6.0 en Visual Studio 2013 si tiene Resharper.
Tienes que habilitar Resharper Construir y voilá! En Resharper Options - > Build-habilite Resharper Build y en " Use MSBuild.versión exe "elegir" Última instalación "

De esta manera Resharper va a construir sus proyectos de C# 6.0 y tampoco subrayará el código de C# 6.0 como no válido.

También estoy usando esto aunque tengo Visual Studio 2015 porque:

  1. Pruebas unitarias en Resharper no trabajes para mí con Visual Studio 2015 por alguna razón
  2. VS 2015 usa mucha más memoria que VS 2013.

Estoy poniendo esto aquí, ya que estaba buscando una solución para este problema desde hace algún tiempo y tal vez ayude a alguien más.

 2
Author: devdimi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-03 12:12:40

Parece Que hay un malentendido. Por lo tanto, en lugar de tratar de parchear VS2013 aquí está y responder de un chico de Microsoft: https://social.msdn.microsoft.com/Forums/vstudio/en-US/49ba9a67-d26a-4b21-80ef-caeb081b878e/will-c-60-ever-be-supported-by-vs-2013?forum=roslyn

Así que, por favor, léalo e instale VS2015.

 -1
Author: Alexander Christov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-12 13:45:34