c# visual-studio c#-5.0 visual-studio-2015 c#-6.0

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



visual-studio c#-5.0 (6)

Esta tool que escribí podría ayudarlo si tiene muchos proyectos para los que necesita configurar LangVersion .

Fondo

Tenemos un proyecto que estamos desarrollando en VS 2015 con C # 6 habilitado que ocasionalmente los desarrolladores deben abrir con 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 útiles construcciones de lenguaje C # 6 que hacen que la solución no funcione en versiones anteriores de Visual Studio sin soporte C # 6.

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

Pregunta

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


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"


Los pasos ya se han escrito anteriormente, solo agregando una captura de pantalla más allá de mi VS2015:

Propiedades del proyecto >> Construir >> Avanzado >> Versión de idioma

Lo configuré en C # 5.0.


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

Debes darte cuenta de que todavía usará la nueva plataforma de compilación .Net "C # 6.0" (con nombre en código Roslyn). Sin embargo, ese compilador imitará el comportamiento de los compiladores más antiguos y lo limitará a funciones solo disponibles en esa versión de idioma específica.

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


Puede configurar la función de idioma para todas las solutions/csproj con MSBuildUserExtensionsPath .

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

Luego edite 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>


agregue a continuación en .sln.DotSettings debería deshabilitarlo en el nivel de solución

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

O si no tiene un archivo .sln.DotSettings :

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

  2. Dele los siguientes contenidos:

    <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 las funciones de C # 6! :)