[英]Relationship between C# 8.0, NET Core 3.0 and Visual Studio
構建C#8.0的文章指出
目前的計划是C#8.0將與.NET Core 3.0同時發布。 但是,隨着我們正在開發的Visual Studio 2019的預覽,這些功能將開始活躍起來。
C#8.0,.NET Core 3.0和Visual Studio之間有什么關系?
作為后續,我也很困惑在物理部署方面新的語言版本實際上是什么。 它是作為新的Visual Studio部署的一部分部署的新程序集,還是部分網絡核心sdk安裝或其他部分? 是否需要將C#8添加到完整框架和.NET Core?
C#語言包含一個規范以及名為Roslyn的參考編譯器。
.Net版本(4.8或.net Core 3)表示框架(一組API),它位於執行編譯程序的托管運行時(CLR)的頂部(以中間語言,一種匯編代碼)。
理想情況下,C#語言與平台無關,並且獨立於框架和運行時,在C#的歷史中,設計了幾個關鍵語言功能,其中CLR的當前版本不允許該功能,或者該功能基於更高級別的類型和框架添加(例如C#5中的Async-Await,以及C#7中某個程度的值元組)。
對於C#8,諸如Async流和范圍之類的語言功能需要新的框架類型,這些類型在框架的當前/早期版本中同樣不存在。 新的默認接口成員需要CLR更改。 因此,這些語言功能(語法)將無法針對早期的框架和CLR版本進行編譯。
與以前的語言迭代不同,Microsoft不會在新的.Net Framework 4.8版中發布這些要求。 相反,他們正在推動.Net Core 3.0作為參考平台,允許他們更快地進行迭代。
關於Visual Studio,雖然您可以在早期版本的IDE中使用C#8編寫代碼並將其編譯為.Net Core 3.0運行時,但您將失去大量的工具,簡單性和開發人員體驗。 語法高亮,完成,代碼修復等工具依賴於Roslyn,后者提供豐富的代碼分析API。
由於框架和語言部署未完全同步,因此使用Visual Studio預覽提供(大多數)兼容的框架和語言版本,以測試兩者的新功能。
一個很好的參考是Building C#8.0博客文章中的“平台依賴關系”部分。
編輯:
回答評論問題'如何安裝C#8':語言規范是作為編譯器(Roslyn)實現和交付的。 請參閱Roslyn GitHub存儲庫 ,其中概述了如何構建,發布和安裝編譯器 - 無論是否安裝特定的Visual Studio。
有兩種方法可以讓C#8.0進行編譯:
現在構建.NET Core 3.0.0將需要安裝相同的SDK。
構建.NET 4.8將需要安裝.NET Full Framework 4.8 SDK。
兩個SDK都可能隨Visual Studio 2019一起提供,或者您必須稍后安裝它們才能夠定位這些框架。
所以: - C# - > Roslyn編譯器
小附錄:看看對C#中新功能的支持,顯然微軟不會使.NET Full .NET框架(4.8及更高版本)與.NET Standard 2.1兼容。 只有.NET Core將來會繼續發展。
看看C#版本的更新和C#工具 ,它提供了與Visual Studio中的項目相關的語言的良好見解。
特別是,
在此方案中選擇的默認語言版本是“ 預覽” 。 您可以訪問的C#8.0功能完全基於您正在使用的編譯器版本(以及.NET SDK)。 在使用將來的預覽時,您可能會獲得更多(或略微調整)的功能。 當您構建項目時,.NET SDK將發出警告,表示這一切仍處於預覽狀態。
在回答
C#8.0,.NET Core 3.0和Visual Studio之間有什么關系?
語言,SDK和Visual Studio版本之間的關系比以前更加寬松。 語言可以在任何版本中獨立於.NET而發展。 這並不意味着永遠都是真的。 Visual Studio也獨立於語言和框架。 如果您查看Visual Studio安裝程序,您將看到語言和.NET支持是可以安裝的“工作負載”。 SDK提供語言功能,VS提供工具。
如果您現在要使用VS 2017,請查看
作為后續,我也很困惑在物理部署方面新的語言版本實際上是什么
它是包含可以從C#8.0源創建程序集的編譯器的SDK。
它是作為新的Visual Studio部署的一部分部署的新程序集,還是部分網絡核心sdk安裝或其他部分?
SDK的一部分,見上文。 這意味着除了您的代碼之外,沒有任何“部署”。 無論版本如何,您的代碼都針對.NET版本。 也就是說,.NET的目標版本必須存在於機器或容器上。
是否需要將C#8添加到完整框架和.NET Core?
它“不需要添加”。 此框架(4.8)和SDK(.NET Core 3.0)的較新版本附帶C#8.0支持。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.