2016-07-18 30 views

Antwort

0

Der Unterschied ist zwischen .Net Core und den vollen .Net Framework, Bedeutung, können Sie die gleiche Syntax verwenden, aber Sie werden Unterschiede in den Klassen finden Sie/können und manchmal verwenden, in wie du sie benutzt.

+0

Okay, aber die Frage ist nicht darüber. – boj

2

Die Sprache selbst ist im Allgemeinen nicht an eine bestimmte Laufzeitumgebung gebunden, obwohl einige Sprachfunktionen Framework-Funktionen erfordern. (Zum Beispiel sind interpoliert Saiten etwas flexibler auf .NET 4.6 als auf .NET 2.0 aufgrund der Anwesenheit von FormattableString.) Allerdings gibt es zwei Dinge zu beachten:

  • Die Version der C# Compiler unterstützt durch das SDK haben Sie installiert (dotnet cli)
  • die Version der C# Compiler-Pakete, die von einem bestimmten Framework-Version

Das SDK unterstützt C# 6 aus der Box unterstützt wird. Ich würde persönlich erwarten die C# 7-Version der Roslyn-Pakete auch .NET Core (z. B. Targeting netstandard1.5) zu unterstützen, so Code, der mehr Code zur Laufzeit kompiliert sollte auf dieser Front in Ordnung sein. Ich weiß nicht, was der Plan in Bezug auf das Verknüpfen von Compiler-Versionen mit SDK-Versionen ist - ich vermute, dass das klarer wird, wenn der Übergang von project.json zu msbuild abgeschlossen ist.

Ich weiß nicht, welche Sprachversion ein bestimmtes SDK standardmäßig unterstützt - es wäre ziemlich einfach, eine Folge von kleinen Klassen zu entwickeln, die bestimmte Sprachfunktionen ausführen und sehen, ob sie kompiliert werden , Na sicher. Schwieriger wäre es, einen Code zu entwickeln, der mit mehreren Versionen erstellt wird, aber unterschiedliche Ergebnisse liefert; Es gibt Möglichkeiten, dies zwischen aufeinander folgenden Sprachversionen zu tun (mindestens 2-3, 3-4, 4-5 ... nicht sicher über 5-6), aber sie sind etwas mehr verschachtelt.

+1

'Autoconf'-Stil Feature-Erkennung für den C# -Compiler ;-) –

3

.NET-Core 1.0 Schiffe mit C# 6. Sie, dass in den Referenzen sehen:

enter image description here

Microsoft.CodeAnalysis * sind die NuGet Pakete für den C# -Compiler. Versionen 1.x entsprechen C# 6 und 2.x (derzeit in Beta) sind C# 7.

Sie können diese Abhängigkeit von NuGet auch sehen: Microsoft.NETCore.App.

Wenn C# 7 herauskommt, wäre es wahrscheinlich möglich, den neuen Compiler zu verwenden, indem Sie sein Paket zu einem .NET Core-Projekt hinzufügen.