Wie aktiviert man C # 6.0-function in Visual Studio 2013?

Ich habe die neuesten functionen von C # 6.0 durchgearbeitet und bin einfach einem Beispiel für die Initialisierung von Autoeigenschaften gefolgt.

class NewSample { public Guid Id { get; } = Guid.NewGuid(); } 

aber meine IDE hat die Syntax nicht erkannt.

Ich frage mich, wie ich C # 6.0 in Visual Studio 2013 aktivieren konnte. Das Zielframework, das ich verwende, ist 4.5.1.

Informationen zur veralteten Vorabversionssoftware:

Demnach ist es nur eine Installation für Visual Studio 2013:

Die Installation des C # 6.0-Compilers von dieser Version umfasst wenig mehr als die Installation einer Visual Studio 2013-Erweiterung, die wiederum die MSBuild-Zieldateien aktualisiert.

Also holen Sie sich die Dateien von https://github.com/dotnet/roslyn und schon können Sie loslegen.

Sie müssen wissen, dass es eine veraltete Version der dort implementierten Spezifikationen ist, da sie das Paket für Visual Studio 2013 nicht mehr aktualisieren :

Sie können auch die Endbenutzervorschau von April ausprobieren, die über Visual Studio 2013 installiert wird. (Hinweis: Diese VS 2013-Vorschau ist ziemlich veraltet und wird nicht mehr aktualisiert.)

Wenn Sie also die neueste Version verwenden möchten, müssen Sie Visual Studio 2015 herunterladen.

Unter VS2013 können Sie die neuen Compiler als nugget-Paket in das Projekt installieren . Auf diese Weise benötigen Sie VS2015 oder einen aktualisierten Build-Server nicht.

https://www.nuget.org/packages/Microsoft.Net.Compilers/

 Install-Package Microsoft.Net.Compilers 

Mit dem Paket können Sie C # 6.0-Code / Syntax verwenden / erstellen. Da VS2013 die neue C # 6.0-Syntax nicht nativ erkennt, werden Fehler im Fenster des Code-Editors angezeigt .

Mit Resharper erhalten Sie auf den C # 6-Features verzerrte Linien, aber die Glühbirne bietet Ihnen die Option “C # 6.0-Unterstützung für dieses Projekt aktivieren” (Einstellungen gespeichert in .DotSettings).

Wie von @ stimpy77 erwähnt: Für die Unterstützung in MVC Razor Views benötigen Sie ein extra Paket (für diejenigen, die die Kommentare nicht lesen)

 Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform 

Wenn Sie vollständige Unterstützung für C # 6.0 benötigen, müssen Sie VS2015 installieren.

Es ist erwähnenswert, dass die Build-Zeit für VS 2015-Benutzer erhöht wird nach :

 Install-Package Microsoft.Net.Compilers 

Diejenigen, die VS 2015 verwenden und dieses Paket in ihren Projekten behalten müssen, können die Build-Zeit verbessern .

Bearbeiten Sie packages\Microsoft.Net.Compilers.1.2.2\build\Microsoft.Net.Compilers.props und bereinigen Sie sie. Die Datei sollte wie folgt aussehen:

   

Dadurch wird das Erstellen eines Projekts so erzwungen, wie es vor dem Hinzufügen des Microsoft.Net.Compilers Pakets war

Viele der Antworten hier wurden geschrieben, bevor Roslyn (die Open-Source .NET C # – und VB-Compiler) nach .NET 4.6 wechselte. Sie werden Ihnen also nicht helfen, wenn Ihr Projekt, sagen wir, 4.5.2 wie meins (geerbt und kann nicht geändert werden).

Sie können jedoch eine frühere Version von Roslyn von https://www.nuget.org/packages/Microsoft.Net.Compilers herunterladen und diese anstelle der neuesten Version installieren. Ich habe 1.3.2 benutzt. (Ich habe versucht, 2.0.1 – das scheint die letzte Version, die auf .NET 4.5 läuft – aber ich konnte es nicht zu kompilieren *.) Führen Sie dies von der Package Manager-Konsole in VS 2013:

 PM> Install-Package Microsoft.Net.Compilers -Version 1.3.2 

Starten Sie dann Visual Studio neu. Ich hatte anfangs ein paar Probleme; Sie müssen die C # -Version auf den Standardwert zurücksetzen (C # 6.0 wird nicht in der Versionsliste angezeigt, sondern scheint die Standardeinstellung zu sein), dann bereinigen, speichern, neu starten und neu kompilieren.

Interessanterweise hatte ich aufgrund der im Code verwendeten C # 6.0-functionen keine IntelliSense-Fehler (was der Grund dafür war, dass C # 6.0 überhaupt gewünscht wurde).

* Version 2.0.1 hat einen Fehler ausgegeben Der Task “Microsoft.CodeAnalysis.BuildTasks.Csc” konnte nicht von der Assembly Microsoft.Build.Tasks.CodeAnalysis.dll geladen werden. Die Datei oder Assembly konnte nicht geladen werden “Microsoft.Build.Utilities.Core, Version = 14.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a ‘oder eines seiner Abhängigkeiten Das System kann die angegebene Datei nicht finden Bestätigen Sie, dass die Deklaration korrekt ist, dass die Assembly und alle ihre Abhängigkeiten verfügbar sind und dass die Task a enthält Öffentliche class, die Microsoft.Build.Framework.ITask implementiert.

UPDATE Eine Sache, die ich seit der Veröffentlichung dieser Antwort bemerkt habe, ist, dass wenn Sie irgendeinen Code während des Debuggens ändern (“Edit and Continue”), Sie feststellen werden, dass Ihr C # 6.0 Code plötzlich als Fehler angezeigt wird eine Umgebung vor C # 6.0. Dies erfordert einen Neustart Ihrer Debug-Sitzung. Sehr nervig, besonders für Webanwendungen.

Es ist möglich, vollständige C # 6.0-Features in Visual Studio 2013 zu verwenden, wenn Sie Resharper haben.
Sie müssen Resharper Build aktivieren und voilá! In Resharper Options -> Build – aktivieren Sie Resharper Build und wählen Sie in “MSBuild.exe version verwenden” “Latest Installed”

Auf diese Weise wird Resharper Ihre C # 6.0-Projekte erstellen und C # 6.0-Code nicht als ungültig kennzeichnen.

Ich benutze das auch, obwohl ich Visual Studio 2015 habe, weil:

  1. Unit Tests in Resharper funktionieren aus irgendeinem Grund nicht mit Visual Studio 2015
  2. VS 2015 verwendet viel mehr Speicher als VS 2013.

Ich lege dies hier an, da ich seit einiger Zeit nach einer Lösung für dieses Problem suche, und vielleicht wird es jemand anderem helfen.

Es scheint ein Missverständnis zu geben. Anstatt also VS2013 zu patchen, antworte ich von einem Microsoft-Kollegen: https://social.msdn.microsoft.com/Forums/vstudio/en-US/49ba9a67-d26a-4b21-80ef-caeb081b878e/will-c- 60-jemals-unterstützt-by-vs-2013? Forum = Roslyn

Also, bitte, lesen Sie es und installieren Sie VS2015.