Wie aktiviere ich die C # 6.0-Funktion in Visual Studio 2013?

201

Ich habe die neuesten Funktionen in C # 6.0 durchgearbeitet und bin nur einem Beispiel für den automatischen Eigenschaftsinitialisierer 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 kann. Das von mir verwendete Zielframework ist 4.5.1.

Hassaan
quelle
7
Ich glaube nicht, dass dies 2013 möglich ist. Schauen Sie sich stattdessen VS 14 CTP oder die VS 2015-Vorschau an.
Jeroen Vannevel
Nun, Sie benötigen den neuesten Compiler, der nicht Teil von VS 2013 ist. Ich denke also nicht, dass dies möglich ist.
Rufus L
2
Nun
1
@PauloMorgado Was bedeutet "das" in "diese Version ist veraltet"? 4.5.1, VS2013 oder VS2014CTP?
ProfK
2
Können Sie bitte die Antwort auf diese Frage auf @Deef
Chris Marisic

Antworten:

64

Informationen für veraltete Prerelease-Software:

Nach dieser ist es nur ein installieren und geht für Visual Studio 2013:

Tatsächlich umfasst die Installation des C # 6.0-Compilers aus dieser Version kaum mehr als die Installation einer Visual Studio 2013-Erweiterung, die wiederum die MSBuild-Zieldateien aktualisiert.

Holen Sie sich einfach die Dateien von https://github.com/dotnet/roslyn und Sie können loslegen.

Sie müssen wissen, dass es sich um eine veraltete Version der dort implementierten Spezifikationen handelt, da das Paket für Visual Studio 2013 nicht mehr aktualisiert wird :

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

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

Patrick Hofman
quelle
7
Leider wurde die Endbenutzervorschau für vs 2013 geschlossen :(
Hassaan
4
Nur um sicherzugehen, dass es keine unterstützte Möglichkeit gibt, mit VS 2013 in C # 6 zu schreiben? Muss ich VS 2015 verwenden?
vorou
2
Das ist richtig. @vorou ​​Es gibt keine aktuelle Version der Vorschau für VS 2013.
Patrick Hofman
5
Eigentlich ist dies ein Weg (siehe meine Antwort). Aber es ist anders als vor Monaten vor der endgültigen Veröffentlichung.
David De Sloovere
1
Keine der Lösungen in diesem oder ähnlichen Themen hat mir geholfen. Die einzige Lösung besteht darin, auf VS 2015 umzusteigen, denke ich.
Yar
177

Unter VS2013 können Sie die neuen Compiler als Nuget-Paket im Projekt installieren . Auf diese Weise benötigen Sie weder VS2015 noch einen aktualisierten Build-Server.

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 Code-Editor-Fenster angezeigt, obwohl sie einwandfrei funktioniert .

Wenn Sie Resharper verwenden, erhalten Sie bei C # 6-Funktionen verschnörkelte Linien, aber die Glühbirne bietet Ihnen die Option, die C # 6.0-Unterstützung für dieses Projekt zu aktivieren (Einstellung in .DotSettings gespeichert).

Wie von @ stimulpy77 erwähnt: Für die Unterstützung in MVC Razor-Ansichten benötigen Sie ein zusätzliches Paket (für diejenigen, die die Kommentare nicht lesen).

Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

Wenn Sie vollständige C # 6.0-Unterstützung wünschen, müssen Sie VS2015 installieren.

David De Sloovere
quelle
8
Primärkonstruktoren wurden tatsächlich aus der endgültigen Version entfernt. Deshalb funktionieren sie nicht.
Mark A. Donohoe
8
Ich möchte nur darauf hinweisen, dass jeder, der C # 6 in Razor in einem MVC5-Projekt verwenden möchte, anscheinend ein separates NuGet-Paket ist und auch dann erforderlich ist, wenn Sie VS2015 verwenden. Siehe stackoverflow.com/a/30832849/11398
Jon Davis
2
Es funktioniert (wie Sie kompilieren können), aber VS2013 zeigt immer noch Fehler: stackoverflow.com/questions/35796001/…
mnwsmit
2
er er er. Das war cool. Der Compiler zeigt Fehler im Voraus an, kompiliert jedoch erfolgreich, wenn er tatsächlich kompiliert wird. Was für ein Hack, um einen Wochenendmorgen zu beginnen!
RBT
1
Es werden Fehler im Code-Editor-Fenster angezeigt, obwohl es gut funktioniert. Ich hatte nur das Bedürfnis, es noch einmal zu zeigen. Gute Antwort!
MeJustAndrew
5

Viele der Antworten hier wurden geschrieben, bevor Roslyn (die Open-Source-Compiler .NET C # und VB) auf .NET 4.6 umstieg. Sie helfen Ihnen also nicht, wenn Ihre Projektziele beispielsweise 4.5.2 sind, wie meine (geerbt und nicht änderbar).

Sie können jedoch eine frühere Version von Roslyn unter https://www.nuget.org/packages/Microsoft.Net.Compilers herunterladen und diese anstelle der neuesten Version installieren. Ich habe 1.3.2 verwendet. (Ich habe 2.0.1 ausprobiert - dies scheint die letzte Version zu sein, die unter .NET 4.5 ausgeführt wird - aber ich konnte es nicht zum Kompilieren bringen *.) Führen Sie dies über die Package Manager-Konsole in VS 2013 aus:

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 Standard zurücksetzen (C # 6.0 wird nicht in der Versionsliste angezeigt, scheint aber zum Standard gemacht worden zu sein), dann bereinigen, speichern, VS neu starten und neu kompilieren.

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

* Version 2.0.1 hat einen Fehler ausgelöst. Die Aufgabe "Microsoft.CodeAnalysis.BuildTasks.Csc" konnte nicht aus der Assembly "Microsoft.Build.Tasks.CodeAnalysis.dll" geladen werden. Datei oder Assembly "Microsoft.Build.Utilities.Core, Version" konnte nicht geladen werden = 14.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a 'oder eine 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 Aufgabe a enthält öffentliche Klasse, die Microsoft.Build.Framework.ITask implementiert.

UPDATE Eine Sache, die mir seit dem Posten dieser Antwort aufgefallen ist, ist, dass wenn Sie während des Debuggens einen Code ändern ("Bearbeiten und fortfahren"), Sie feststellen, dass Ihr C # 6.0-Code plötzlich als Fehler in dem angezeigt wird, worauf er zurückzugreifen scheint eine Pre-C # 6.0-Umgebung. Dies erfordert einen Neustart Ihrer Debug-Sitzung. Sehr ärgerlich vor allem für Webanwendungen.

SteveCinq
quelle
@RichBianco Das ist großartig - danke für das Feedback und die Abstimmung. Persönlich kann ich nicht verstehen, warum v2.0.1 nicht funktioniert. Wenn jemand irgendwelche Hinweise dazu hat - wie in, um den von mir gemeldeten Fehler zu beseitigen -, posten Sie bitte Ihren Fix.
SteveCinq
4

Es ist erwähnenswert, dass die Erstellungszeit für VS 2015-Benutzer verlängert wird, nachdem :

Install-Package Microsoft.Net.Compilers

Diejenigen, die VS 2015 verwenden und dieses Paket in ihren Projekten behalten müssen, können eine längere Erstellungszeit beheben .

Bearbeiten Sie die Datei packages\Microsoft.Net.Compilers.1.2.2\build\Microsoft.Net.Compilers.propsund bereinigen Sie sie. Die Datei sollte folgendermaßen aussehen:

<Project DefaultTargets="Build" 
         xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
</Project>

Dadurch wird ein Projekt so erstellt, wie es vor dem Hinzufügen eines Microsoft.Net.CompilersPakets war

Ashot Muradian
quelle
2

Wenn Sie über Resharper verfügen, können Sie in Visual Studio 2013 alle C # 6.0-Funktionen verwenden.
Sie müssen Resharper Build und voilá aktivieren! Wählen Sie unter Resharper-Optionen -> Build - Resharper-Build aktivieren und unter "MSBuild.exe-Version verwenden" die Option "Neueste Installation".

Auf diese Weise erstellt Resharper Ihre C # 6.0-Projekte und unterstreicht den C # 6.0-Code nicht als ungültig.

Ich benutze dies 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 stelle dies hier ein, da ich schon seit einiger Zeit nach einer Lösung für dieses Problem gesucht habe und es vielleicht jemand anderem hilft.

devdimi
quelle
-1

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

Lesen Sie es also bitte und installieren Sie VS2015.

Alexander Christov
quelle
1
Der Link gibt mir 'nicht autorisiert' auch nach ms login. Natürlich ist die Installation von VS2015 oder höher in einigen Einstellungen ein Aufwand von XXX.000 GBP.
Chris F Carroll