Microsoft持續(xù)發(fā)表Visual Studio 2015的新特性與功能。在最新的稱為Update 2的變更中也不例外,對.NET Native編譯器進行了幾項更新。你可能記得,當.NET native作為編譯目標時,Windows應用程序(這里指針對Windows 10的UWP應用程序)直接被編譯為本地代碼,而不產(chǎn)生默認的中間語言(IL)。這樣做有幾個優(yōu)點,最主要的是開發(fā)者可以繼續(xù)用C#或是Visual Basic寫應用程序,而與傳統(tǒng)的基于IL的應用程序相比,用戶可得到更快的執(zhí)行速度,更短的啟動時間并占有更少的內(nèi)存。
可以預見,編譯.NET為本地代碼有許多缺點。Microsoft準備了一個很長的列表,其中列出了他們認為的.NET Native與常規(guī)的Windows應用程序之間的“行為變化”。本文不會詳細說明這些變化,但值得注意的是其中涉及泛型反射的變化。正如.NET團隊的Stacey Haffner和Matthew Whilden在一篇博文中寫道的,“當編譯本地代碼時,動態(tài)性問題將會成為一個挑戰(zhàn),因為所有的代碼都必須在編譯時識別和編譯。”
由于使用靜態(tài)分析來確定所有泛型實例非常復雜,團隊引入了Universal Shared Generics (UGS)?,F(xiàn)在當可以用特定類型的代碼表示時,會產(chǎn)生優(yōu)化后的代碼,而當不可表示時則會使用UGS。
另外一個有利于所有.NET Native開發(fā)者的變化是.NET Native項目編譯器后端的改變。最新發(fā)布的1.3.1版本的.NET Native工具使用與Microsoft C++編譯器相同的程序內(nèi)聯(lián)引擎。隨著時間的推移,.NET團隊計劃在.NET Native項目中使用更多C++編譯器提供的優(yōu)化方案。
要使用這些新的編譯器功能,你需要下載最新的UWP App Development Tools(1.3.1版本 for Windows 10 SDK 10.0.10586),并從NuGet下載最新的.NET Core UWP包。它們需要安裝在Update 2可用的Visual Studio 2015之上。
查看英文原文:How VS2015 Update 2 Improves .NET Native Code