2016-07-18 117 views

回答

0

差更.Net Core和全.Net Framework,含義之間,你就可以使用相同的語法,但你會發現在類,你可以/不能使用的差異,有時,在你使用它們的方式。

+0

好的,但問題不在於此。 – boj

2

雖然某些語言功能確實需要框架功能,但語言本身通常並不與特定的運行時/框架綁定。 (例如,內插的字符串上.NET 4.6比NET 2.0更靈活一點由於FormattableString存在下進行。)然而,還有需要考慮兩件事情:

  • C#編譯器的版本支持由SDK你安裝(dotnet cli
  • 由一個特定的框架版本

的SDK支持C#編譯器包的版本支持C#6開箱。我會親自期望 Roslyn軟件包的C#7版本以支持.NET Core(例如,針對netstandard1.5),因此在執行時編譯更多代碼的代碼在這方面應該沒問題。我不知道在將編譯器版本綁定到SDK版本方面計劃是什麼 - 我懷疑當project.json到msbuild轉換完成時會變得更清晰。

我不知道有什麼方法可以確定特定SDK支持哪些語言版本 - 可以很容易地創建一系列運行特定語言功能的小類,並查看它們是否編譯, 當然。 Trickier將會提出構建多個版本的代碼,但會給出不同的結果;在連續的語言版本(至少2-3,3-4,4-5 ...不確定5-6)之間可以這樣做,但它們稍微複雜一些。

+1

針對C#編譯器的'autoconf'樣式特徵檢測;-) –

3

.NET核心1.0附帶C#6你可以看到,在參考文獻:

enter image description here

Microsoft.CodeAnalysis *是的NuGet包的C#編譯器。版本1.x對應於C#6,並且2.x(當前處於測試版)爲C#7.

您也可以在NuGet上看到這種依賴關係:Microsoft.NETCore.App

當C#7出來時,可能會通過將其包添加到.NET Core項目來使用新編譯器。