微軟Build Live大會.NET Core 3和對Windows桌面應用程式的支持

在微軟Build Live大會上,微軟.Net Core團隊公開了.net Core3的開發計劃的預覽。.Net Core 3 的亮點是支持Windows桌面應用程序,特別是Windows窗體、Windows Presentation Framework (WPF)和UWP XAML。您將能夠在. net Core上運行新的和現有的Windows桌面應用程序,並能享受.Net Core提供的所有好處。

微軟.Net Core團隊計劃在今年晚些時候發佈.Net Core 3的第一個預覽版,並在2019年發佈最終版本。我們將尋找與我們合作的開發人員,向我們提供反饋,並在我們發佈的同時發佈您的應用程序版本。我們認為.Net Core 3.0將會是我們發佈過的最激動人心的.Net 版本之一。

ASP.NET Core將繼續並行前進,並將發佈.NET Core 3.0版本。我們對web和雲應用的承諾沒有改變。與此同時,是時候將Windows桌面應用程序添加到. net Core中了。我們已經聽到了許多針對.net核心的桌面應用程序的請求,現在正在分享了我們的計劃。

.NET Core對桌面程序的好處

對於桌面應用程序來說,. net Core有很多好處。

有一些是值得明確指出的:

性能改進和其他運行時更新,會讓你的用戶高興

非常容易使用或測試新版本的

支持機器全局和應用程序本地部署

在Visual Studio中支持.NET核心CLI工具和sdk樣式的項目

我們還宣佈將在.net Core 3.0和.net Framework 4.8中加入一系列的改進:

訪問完整的Windows 10(即“WinRT”)API。

能夠在WPF和Windows窗體應用程序中駐留UWP XAML控件。

能夠託管UWP瀏覽器和媒體控件,支持現代瀏覽器和媒體內容和標準。

.NET Framework 4.8

在一週前發佈了.net Framework 4.7.2之後,我們還將公佈我們的netframework 4.8開發計劃。我們預計在12個月內發佈下一個版本4.8。與過去的幾個版本一樣,新版本將包含一系列有針對性的改進,包括上面列出的特性。

可視化.net Core 3

讓我們來看一下.net Core 3結構圖

微軟Build Live大會.NET Core 3和對Windows桌面應用程序的支持

對Windows桌面的支持將作為一組“Windows桌面包”添加,只在Windows上使用。我們將繼續提供一個優秀的跨平臺產品,專注於雲計算。我們計劃對這些場景進行很多改進,稍後將與大家分享。

從更高層次的視角來看,你可以把WPF想象成在DirectX上的富層,而Windows則是在GDI Plus上的更薄層。WPF和Windows窗體在Windows中很好地暴露和運行了許多桌面應用程序功能。它是Windows窗體和WPF中的c#代碼,我們將其作為一組帶有.net Core 3的庫。Windows的功能,如GDI Plus和DirectX,將保留在Windows中。

我們還將同時發佈一個新的 .NET Standard 版本。當然,所有新的 .NET 標準api都將是 .NET Core 3.0的一部分。例如,我們還沒有將Span添加到標準中。我們將在下一個版本中做這個。

c#、f#和VB已經在使用.NET Core 2.0了。您將能夠使用.NET Core 3中的任意一種語言構建桌面應用程序。

Side-by-side 應用程序本地部署

. net核心部署模型是Windows桌面開發人員在. net Core 3中體驗到的最大好處之一。簡而言之,你可以以任何你想要的方式安裝。net Core。它具有很多部署靈活性。

當新的.net Core版本發佈時,您可以一次更新一個應用程序,而不必擔心影響其他應用程序。新的.net核心版本安裝在新的目錄中,現有的應用程序不使用。

對於需要最大隔離的情況,您可以在應用程序中部署. net Core。我們正在開發新的構建工具,將你的應用程序和.net核心作為一個新的可執行文件捆綁在一起。

我們已經有這樣的部署選項的請求很多年了,但是從來都不能用.net框架來交付。. net Core使用的模塊化架構使這些靈活的部署選項成為可能。

在現有的桌面應用程序中使用.NET Core 3

對於新的桌面應用程序,我們將指導大家從.net Core 3開始。更有趣的問題是,將現有的應用程序(尤其是大型應用程序)遷移到.net Core 3,會是什麼樣的體驗。我們希望體驗足夠簡單,對於任何正在進行活動開發的應用程序來說,遷移到.net Core 3是一個簡單的選擇。

快速解釋我們的計劃:

桌面應用程序需要針對.net Core 3重新編譯。

項目文件需要更新到目標.net Core 3。

依賴項不需要重新定位和重新編譯。如果您更新依賴項,將會有額外的好處。

我們打算為桌面應用程序提供兼容的api。我們計劃讓WPF和Windows同時具備功能,但其他方面都是如此,並讓它們在.net Core 3上工作。事實上,我們已經使用了一些自己的應用程序和其他我們可以訪問的應用程序。

我們有一個版本的Paint.NET在我們實驗室裡運行。事實上,我們並沒有接觸Paint.NET的源代碼。我們讓現有的Paint.NET二進制文件運行在.net Core上。我們沒有可用的WPF的運行程序,所以我們只是在實驗室機器上的. net Framework目錄中使用了WPF二進制文件。順便提一下,這個試驗在.netCore中發現了一個未知的bug,這個bug已經被net Core 2.1修復。

我們還沒有做任何優化,但我們發現Paint.NET在.net Core中運行時啟動速度更快。這真是一個驚喜。

類似地,EF6將被更新為.net Core 3.0,為使用EF6的現有應用程序提供一個簡單的前進路徑。但是我們不打算為EF6添加任何主要的新特性.EF Core將擴展為新的特性,並將保留所有類型的新應用程序的推薦數據堆棧。如果您想利用新特性和改進性能,我們建議您移植到EF Core。

我們知道兼容性對於將現有桌面應用程序遷移到.net Core 3的每個人來說都是非常重要的。我們將繼續測試應用程序,並向. net核心添加更多功能來支持它們。我們將發佈任何難以支持的api,這樣我們就可以得到您的反饋。

更新項目文件

在.NET Core項目中,我們採用了sdk風格的項目。sdk風格項目的一個關鍵方面是PackageReference,它是引用NuGet包的一種更新的方式。PackageReference替換packages.config。PackageReference可以同時引用整個組件區域,而不是一次只引用一個組件。

與sdk風格項目相比,最大的經驗改進是:

更小更清潔的項目文件。

更友好的源碼控制(更少的變化和更小的差別)

NuGet是構建和響應目標框架更新等變更的一部分。

支持多平臺

為桌面項目採用。net Core 3的第一部分將遷移到sdk風格的項目。在Visual Studio中會有遷移體驗,可以在命令行中獲得。

一個用於ASP的sdk樣式的項目的例子. NET Core 2.1緊隨其後。。NET Core 3項目文件看起來類似。

控件、NuGet包和現有的程序集引用

桌面應用程序通常有許多依賴項,可能來自控件供應商,也可能來自不再具有源代碼的NuGet或二進制文件。並不是所有這些都可以快速更新到.net Core 3,有的甚至可能根本不更新。

如上所述,我們打算支持現有的依賴關係。如果您在Build大會上,您將看到Scott Hunter演示一個.NET Core 3桌面應用程序,該應用程序使用現有的第三方控件。我們將繼續測試類似的場景,以驗證.net Core 3的兼容性。

今天的新聞展示了Windows桌面應用的巨大投資和承諾。您可以期待我們在2019年發佈兩個版本,net Core 3和.net Framework 4.8。這兩個版本之間共享了許多特性,而其他一些特性僅在.net Core 3中可用。我們認為,這種共性和差異為桌面應用程序的發展和現代化提供了大量的選擇。


分享到:


相關文章: