¿Cómo deshabilito la compatibilidad con C# 6 en Visual Studio 2015?


Fondo

Tenemos un proyecto que estamos desarrollando en VS 2015 con C#6 habilitado que ocasionalmente necesita ser abierto por desarrolladores usando VS 2013 sin C#6.

No tenemos intención de usar C# 6 dentro de esta solución en particular (tanto como me gustaría).

Problema

Visual Studio y ReSharper sugieren construcciones útiles del lenguaje C# 6 que hacen que la solución no funcione en versiones anteriores de Visual Studio sin compatibilidad con C#6.

He deshabilitado el soporte de ReSharper C#6 pero parece que no puedo deshabilitar / limitar las características de C# en toda la solución.

Pregunta

¿Cómo puedo limitar las capacidades de C# a C#5 dentro de una solución o dentro de Visual Studio 2015?

Author: Community, 2015-05-26

6 answers

Puede configurar la función de idioma para cada proyecto por separado yendo a Properties => Build tab => Advanced button => Language Version y establecer su versión preferida.

Debe darse cuenta de que todavía utilizará la nueva Plataforma Compiladora.Net "C# 6.0" (con nombre en código Roslyn). Sin embargo, ese compilador imitará el comportamiento de compiladores más antiguos y lo limitará a características solo disponibles en esa versión específica del lenguaje.


No creo que haya una configuración de toda la solución disponible.

 129
Author: i3arnon,
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-04-04 19:20:34

Añadir a continuación en {[2] } debe desactivarlo en el nivel de solución

<s:String x:Key="/Default/CodeInspection/CSharpLanguageProject/LanguageLevel/@EntryValue">CSharp50</s:String>

O si no tienes un archivo .sln.DotSettings:

  1. Si su archivo de solución se llama Apple.sln, crea un archivo al lado llamado Apple.sln.DotSettings.

  2. Dale el siguiente contenido:

    <wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
        <s:String x:Key="/Default/CodeInspection/CSharpLanguageProject/LanguageLevel/@EntryValue">CSharp50</s:String>
    </wpf:ResourceDictionary>
    
  3. Cierre y vuelva a abrir la solución, Resharper solo debería advertirle sobre las cosas de C#5.

  4. No olvide eliminar esto cuando finalmente comience a usar C # 6 características! :)

 49
Author: harishr,
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
2015-09-04 15:40:48

Puede establecer la función de idioma para todos los solutions/csproj con MSBuildUserExtensionsPath.

Busca el valor de $(MSBuildUserExtensionsPath), debería ser algo así como C:\Users\$(User)\AppData\Local\Microsoft\MSBuild

Luego edita el archivo Force.LangVersion.ImportBefore.props en la carpeta $(MSBuildUserExtensionsPath)\14.0\Imports\Microsoft.Common.Props\ImportBefore con:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <LangVersion>5</LangVersion>
  </PropertyGroup>
</Project>
 10
Author: whaly,
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
2015-09-10 17:37:36

Esta herramienta que escribí podría ayudarte si tienes muchos proyectos para los que necesitas establecer LangVersion.

 10
Author: khellang,
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
2015-09-30 15:01:19

Los pasos ya se han escrito anteriormente, simplemente agregando una captura de pantalla adicional de mi VS2015:

Propiedades del proyecto > > Build > > Advanced > > Language version

introduzca la descripción de la imagen aquí

Lo puse en C# 5.0.

 9
Author: Raghav,
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-03-20 17:09:14

Haga clic derecho en Proyecto en el Explorador de proyectos y seleccione Propiedades.

Cuando se abra la pestaña Propiedades, seleccione Construir y haga clic en el botón Avanzar en la parte inferior derecha.

Hay un cuadro desplegable llamado Versión de idioma. Cambie la selección a"C# 5.0"

 8
Author: Nicknow,
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
2015-05-26 14:43:54