¿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"
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
:
-
Si su archivo de solución se llama Apple.sln, cree un archivo al lado llamado Apple.sln.DotSettings.
-
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>
-
Cierre y vuelva a abrir la solución, Resharper solo debería advertirle sobre las cosas de C # 5.
-
¡No olvide eliminar esto cuando finalmente comience a usar las funciones de C # 6! :)