使用 .NET Native 編譯應用程式

.NET Native 是用於建置及部署 Windows 應用程式的先行編譯技術。 .NET Native 隨附於 Visual Studio 2015 和更新版本。 這可將以 Managed 程式碼 (C# 或 Visual Basic) 撰寫的 UWP 應用程式發行版本自動編譯為機器碼。

一般而言,.NET 應用程式會編譯為中繼語言 (IL)。 在執行階段,just-in-time (JIT) 編譯器會將 IL 轉譯成機器碼。 相反地,.NET Native 會將 UWP 應用程式直接編譯成機器碼。 對開發人員而言,這表示:

  • 您的應用程式具有機器碼的效能。 通常,效能會優於先編譯為 IL 的程式碼,然後由 JIT 編譯器編譯成機器碼。

  • 您可以繼續以 C# 或 Visual Basic 進行程式設計。

  • 您可以繼續利用 .NET Framework 所提供的資源,包括其類別庫、自動記憶體管理和記憶體回收,以及例外狀況處理。

針對您的應用程式使用者,.NET Native 提供下列優點:

  • 大部分應用程式和案例的執行時間更快。

  • 大部分應用程式和案例的啟動時間更快。

  • 部署和更新成本低。

  • 最佳化的應用程式記憶體使用量。

但 .NET Native 涉及的不只是編譯為機器碼。 它會將轉換 .NET Framework 應用程式建置和執行的方式。 特別是:

  • 在先行編譯期間,.NET Framework 的必要部分會以靜態方式連結至您的應用程式。 這可讓應用程式使用 .NET Framework 的應用程式本機程式庫執行,而編譯器可執行全域分析以提供效能優勢。 如此一來,即使 .NET Framework 更新之後,應用程式還是一貫地會以更快的速度啟動。

  • .NET Native 執行階段已針對靜態先行編譯進行最佳化,而且在絕大多數的情況下提供優越的效能。 同時,它還保留了開發人員會覺得生產力極佳的核心反映功能。

  • .NET Native 使用與 C++ 編譯器相同的後端,其已針對靜態先行編譯案例進行最佳化。

.NET Native 能夠將 C++ 的效能優勢帶給 Managed 程式碼開發人員,因為其本質上使用與 C++ 相同或類似的工具,如下表所示。

元件 .NET Native C++
程式庫 .NET Framework + Windows Runtime Win32 + Windows 執行階段
編譯器 UTC 最佳化編譯器 UTC 最佳化編譯器
已部署 可立即執行的二進位檔案 可立即執行的二進位檔案 (ASM)
執行階段 MRT.dll (最小 CLR 執行階段) CRT.dll (C 執行階段)

針對 UWP 應用程式,您可將應用程式套件中的 .NET Native 程式碼編譯二進位檔 (.msix 或 .appx 檔案) 上傳至 Windows Store。