Nous développons un projet que nous développons dans VS 2015 avec C # 6 et que les développeurs utilisant VS 2013 sans C # 6 doivent parfois ouvrir.
Nous n'avons aucune intention d'utiliser le C # 6 dans cette solution particulière (autant que je le souhaiterais).
Visual Studio et ReSharper suggèrent des constructions de langage C # 6 utiles qui rendent la solution inutilisable dans les versions antérieures de Visual Studio sans la prise en charge de C # 6.
j'ai désactivé le support ReSharper C # 6 mais je n'arrive pas à désactiver/limiter les fonctionnalités C # dans l'ensemble de la solution.
Comment limiter les fonctionnalités de C # à C # 5 au sein d'une solution ou de Visual Studio 2015?
Vous pouvez définir la fonctionnalité de langue pour chaque projet séparément en allant à Properties => Build tab => Advanced button => Language Version
et définissez votre version préférée.
Vous devez savoir qu'il utilisera toujours la nouvelle plate-forme de compilateur .Net "C # 6.0" (nommée Roslyn). Cependant, ce compilateur va imiter le comportement des anciens compilateurs et vous limitera à des fonctionnalités uniquement disponibles dans cette version linguistique.
Je ne pense pas qu'il existe un paramètre à l'échelle de la solution disponible.
ajouter ci-dessous dans .sln.DotSettings
devrait le désactiver au niveau de la solution
<s:String x:Key="/Default/CodeInspection/CSharpLanguageProject/LanguageLevel/@EntryValue">CSharp50</s:String>
Ou si vous n'avez pas de .sln.DotSettings
fichier:
Si votre fichier de solution s'appelle Apple.sln, créez-y un fichier nommé Apple.sln.DotSettings.
Donnez-lui le contenu suivant:
<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>
Fermez et rouvrez la solution. Resharper ne devrait vous avertir que de choses C # 5.
N'oubliez pas de l'enlever lorsque vous commencez à utiliser les fonctionnalités de C # 6! :)
Ce outil j’ai écrit pourrait vous aider si vous avez plusieurs projets pour lesquels vous devez définir LangVersion
.
Vous pouvez définir la fonctionnalité de langue pour tous les solutions/csproj
Avec le MSBuildUserExtensionsPath
.
Recherchez la valeur de la fonction $(MSBuildUserExtensionsPath)
, elle devrait ressembler à quelque chose comme C:\Users\$(User)\AppData\Local\Microsoft\MSBuild
Puis éditez le fichier Force.LangVersion.ImportBefore.props
Dans le dossier $(MSBuildUserExtensionsPath)\14.0\Imports\Microsoft.Common.Props\ImportBefore
avec:
<Project xmlns="http://schemas.Microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<LangVersion>5</LangVersion>
</PropertyGroup>
</Project>
Cliquez avec le bouton droit sur Projet dans l'explorateur de projets et sélectionnez Propriétés.
Lorsque l'onglet Propriétés s'ouvre, sélectionnez Construire et cliquez sur le bouton Avancer en bas à droite.
Il existe une liste déroulante appelée Version linguistique. Changer la sélection en "C # 5.0"