¿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?
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.
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
:
Si su archivo de solución se llama Apple.sln, crea un archivo al lado llamado Apple.sln.DotSettings.
-
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>
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 C # 6 características! :)
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>
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
.
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
Lo puse en C# 5.0.
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"
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