web-dev-qa-db-fra.com

Comment désactiver la prise en charge de C # 6 dans Visual Studio 2015?

Contexte

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).

Problème

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.

Question

Comment limiter les fonctionnalités de C # à C # 5 au sein d'une solution ou de Visual Studio 2015?

136
SeanKilleen

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.

135
i3arnon

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:

  1. Si votre fichier de solution s'appelle Apple.sln, créez-y un fichier nommé Apple.sln.DotSettings.

  2. 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>
    
  3. Fermez et rouvrez la solution. Resharper ne devrait vous avertir que de choses C # 5.

  4. N'oubliez pas de l'enlever lorsque vous commencez à utiliser les fonctionnalités de C # 6! :)

49
harishr

Ce outil j’ai écrit pourrait vous aider si vous avez plusieurs projets pour lesquels vous devez définir LangVersion.

11
khellang

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>
10
whaly

Les étapes ont déjà été écrites ci-dessus, en ajoutant simplement une capture d'écran de mon VS2015:

Propriétés du projet >> Construire >> Avancé >> Version du langage

enter image description here

J'ai mis cela en C # 5.0.

9
Raghav

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"

8
Nicknow