wake-up-neo.com

Wie deaktiviere ich die C # 6-Unterstützung in Visual Studio 2015?

Hintergrund

Wir haben ein Projekt, das wir in VS 2015 mit aktiviertem C # 6 entwickeln und das gelegentlich von Entwicklern mit VS 2013 ohne C # 6 geöffnet werden muss.

Wir haben nicht die Absicht, C # 6 in dieser speziellen Lösung zu verwenden (so oft ich möchte).

Problem

Visual Studio und ReSharper schlagen hilfreiche C # 6-Sprachkonstrukte vor, mit denen die Lösung in früheren Versionen von Visual Studio ohne Unterstützung von C # 6 nicht mehr funktionsfähig ist.

Ich habe die ReSharper C # 6-Unterstützung deaktiviert , aber ich kann C # -Funktionen nicht für die gesamte Lösung deaktivieren/einschränken.

Frage

Wie beschränke ich C # auf C # 5-Funktionen in einer Lösung oder in Visual Studio 2015?

136
SeanKilleen

Sie können die Sprachfunktion für jedes Projekt separat einstellen, indem Sie zu Properties => Build tab => Advanced button => Language Version und stellen Sie Ihre bevorzugte Version ein.

Sie sollten sich darüber im Klaren sein, dass weiterhin die neue "C # 6.0" .Net Compiler Platform (Codename Roslyn) verwendet wird. Dieser Compiler wird jedoch imitieren das Verhalten älterer Compiler und Sie auf Funktionen beschränken, die nur in dieser bestimmten Sprachversion verfügbar sind.


Ich glaube nicht, dass es eine lösungsweite Einstellung gibt.

135
i3arnon

das Hinzufügen unter .sln.DotSettings sollte es auf Lösungsebene deaktivieren

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

Oder wenn Sie keine .sln.DotSettings - Datei haben:

  1. Wenn Ihre Lösungsdatei Apple.sln heißt, erstellen Sie eine Datei mit dem Namen Apple.sln.DotSettings.

  2. Gib ihm folgenden Inhalt:

    <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. Schließen Sie die Lösung und öffnen Sie sie erneut. Resharper sollte Sie nur vor C # 5-Dingen warnen.

  4. Vergessen Sie nicht, dies zu entfernen, wenn Sie mit der Verwendung von C # 6-Funktionen beginnen! :)

49
harishr

Dieses Tool , das ich geschrieben habe, könnte Ihnen helfen, wenn Sie viele Projekte haben, für die Sie LangVersion einstellen müssen.

11
khellang

Sie können die Sprachfunktion für alle solutions/csproj Mit dem MSBuildUserExtensionsPath einstellen.

Suche den Wert von $(MSBuildUserExtensionsPath), es sollte ungefähr so ​​sein wie C:\Users\$(User)\AppData\Local\Microsoft\MSBuild

Bearbeiten Sie dann die Datei Force.LangVersion.ImportBefore.props Im Ordner $(MSBuildUserExtensionsPath)\14.0\Imports\Microsoft.Common.Props\ImportBefore mit:

<Project xmlns="http://schemas.Microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <LangVersion>5</LangVersion>
  </PropertyGroup>
</Project>
10
whaly

Schritte wurden bereits oben geschrieben, nur ein Screenshot meines VS2015 hinzugefügt:

Eigenschaften des Projekts >> Build >> Advanced >> Sprachversion

enter image description here

Ich habe das auf C # 5.0 gesetzt.

9
Raghav

Klicken Sie im Projektexplorer mit der rechten Maustaste auf Projekt und wählen Sie Eigenschaften.

Wenn die Registerkarte "Eigenschaften" geöffnet wird, wählen Sie "Erstellen" und klicken Sie auf die Schaltfläche "Erweitern" unten rechts.

Es gibt ein Dropdown-Feld namens Sprachversion. Ändern Sie die Auswahl in "C # 5.0".

8
Nicknow