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

201

Estaba revisando las últimas funciones introducidas en C # 6.0 y seguí un ejemplo de inicializador de propiedades automáticas

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 de Target que estoy usando es 4.5.1.

Hassaan
fuente
77
No creo que sea posible en 2013. Busque VS 14 CTP o la vista previa de VS 2015.
Jeroen Vannevel
Bueno, necesitarías el último compilador, que no es parte de VS 2013, así que no creo que sea posible.
Rufus L
2
bueno, solo estoy buscando saber si ms lanza alguna actualización o no
Hassaan
1
@PauloMorgado ¿Qué significa 'eso' en "esa versión está desactualizada"? 4.5.1, VS2013 o VS2014CTP?
ProfK
2
¿Puede actualizar la respuesta a esta pregunta a @Deef
Chris Marisic

Respuestas:

64

Información para el software de prelanzamiento obsoleto:

De acuerdo con esto , 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.

Tan solo obtenga los archivos de https://github.com/dotnet/roslyn y estará listo para comenzar.

Debe saber que es una versión desactualizada 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 abril, que se instala sobre Visual Studio 2013. (nota: esta vista previa de VS 2013 está bastante desactualizada y ya no se actualiza)

Entonces, si desea utilizar la última versión, debe descargar Visual Studio 2015 .

Patrick Hofman
fuente
77
desafortunadamente, la vista previa del usuario final para 2013 se ha cerrado :(
Hassaan
44
Solo para asegurarse, ¿no hay una forma compatible de escribir en C # 6 usando VS 2013? ¿Tengo que usar VS 2015?
vorou
2
Eso es correcto. @vorou ​​No hay una versión reciente de la vista previa para VS 2013.
Patrick Hofman
55
En realidad, esta es una forma (ver mi respuesta). Pero es diferente de lo que podías hacer hace meses antes del lanzamiento final.
David De Sloovere
1
Ninguna de las soluciones en este tema u otros temas similares me ayudó. así que supongo que la única solución es pasar a VS 2015.
Yar
177

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 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 se compilará bien .

Con Resharper, obtendrá líneas onduladas en las funciones de C # 6, pero la bombilla le ofrece la opción de 'Habilitar la compatibilidad con C # 6.0 para este proyecto' (configuración guardada en .DotSettings).

Según lo mencionado por @ stimpy77: para soporte en vistas de MVC Razor , necesitará un paquete adicional (para aquellos que no leen los comentarios)

Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

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

David De Sloovere
fuente
8
Los constructores principales se eliminaron de la versión final. Por eso no funcionan.
Mark A. Donohoe
8
Solo quiero señalar a cualquiera que quiera usar C # 6 en Razor en un proyecto MVC5, parece que es un paquete NuGet separado y es necesario incluso si está usando VS2015. Ver stackoverflow.com/a/30832849/11398
Jon Davis
2
Funciona (como puede compilar), sin embargo, VS2013 todavía muestra errores: stackoverflow.com/questions/35796001/…
mnwsmit
2
él él él. Esto fue genial. El compilador muestra los errores por adelantado, pero se compila correctamente cuando se compila realmente. ¡Qué truco para comenzar un fin de semana por la mañana!
RBT
1
mostrará errores en la ventana del editor de código, aunque funcionará bien. Solo sentí la necesidad de señalarlo de nuevo. ¡Gran respuesta!
meJustAndrew
5

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

Pero puede obtener una versión anterior de Roslyn en https://www.nuget.org/packages/Microsoft.Net.Compilers e instalarla en lugar de la última versión. Usé 1.3.2. (Intenté 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 de Package Manager en VS 2013:

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

Luego reinicie Visual Studio. Tuve un par de problemas inicialmente; debe volver a configurar la versión de C # por defecto (C # 6.0 no aparece en la lista de versiones, pero parece que se convirtió en la predeterminada), luego limpie, guarde, reinicie VS y vuelva a compilar.

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

* la versión 2.0.1 arrojó un error La tarea "Microsoft.CodeAnalysis.BuildTasks.Csc no se pudo cargar desde el ensamblado Microsoft.Build.Tasks.CodeAnalysis.dll. No se pudo cargar el archivo o ensamblado 'Microsoft.Build.Utilities.Core, Version = 14.0.0.0, Cultura = neutral, PublicKeyToken = b03f5f7f11d50a3a 'o una de sus dependencias. El sistema no puede encontrar el archivo especificado. Confirme que la declaración es correcta, que el ensamblado y todas sus dependencias están disponibles, y que la tarea contiene un clase pública que implementa Microsoft.Build.Framework.ITask.

ACTUALIZACIÓN Una cosa que he notado desde que publiqué esta respuesta es que si cambia algún código durante la depuración ("Editar y continuar"), le gustaría encontrar que su código C # 6.0 se mostrará repentinamente como errores en lo que parece volver a un entorno anterior a C # 6.0. Esto requiere un reinicio de su sesión de depuración. MUY molesto especialmente para aplicaciones web.

SteveCinq
fuente
@RichBianco Eso es genial, gracias por los comentarios y el voto positivo. Personalmente, no puedo entender por qué v2.0.1 no funciona. Si alguien tiene alguna pista sobre esto, como al deshacerse del error que informé, publique su solución.
SteveCinq
4

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

Install-Package Microsoft.Net.Compilers

Aquellos que usan VS 2015 y tienen que mantener este paquete en sus proyectos pueden arreglar un mayor tiempo de compilación .

Edite el archivo packages\Microsoft.Net.Compilers.1.2.2\build\Microsoft.Net.Compilers.propsy límpielo. El archivo debería verse así:

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

Hacerlo obliga a construir un proyecto como estaba antes de agregar el Microsoft.Net.Compilerspaquete

Ashot Muradian
fuente
2

Es posible usar funciones completas de C # 6.0 en Visual Studio 2013 si tiene Resharper.
¡Tienes que habilitar Resharper Build y listo! En Opciones de Resharper -> Build - active Resharper Build y en "Use MSBuild.exe version" seleccione "Latest Installed"

De esta forma, Resharper 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. Las pruebas unitarias en Resharper no funcionan 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.

devdimi
fuente
-1

Parece que hay algunos malentendidos. Entonces, en lugar de tratar de parchear VS2013, aquí hay una respuesta de un chico de Microsoft: https://social.msdn.microsoft.com/Forums/vstudio/en-US/49ba9a67-d26a-4b21-80ef-caeb081b878e/will-c- 60-ever-be-support-by-vs-2013? Forum = roslyn

Entonces, por favor, léalo e instale VS2015.

Alexander Christov
fuente
1
el enlace me da 'no autorizado' incluso después de iniciar sesión ms. Por supuesto, instalar VS2015 o posterior es un gasto de £ XXX, 000s en algunas configuraciones.
Chris F Carroll