使用 .NET Native 编译应用

.NET Native 是用于生成和部署 UWP 应用的预编译技术。 Visual Studio 2015 及更高版本包含 .NET Native。 它会自动将用托管代码(C# 或 Visual Basic)编写的 UWP 应用的发布版本编译为本机代码。

通常,.NET 应用编译为中间语言(IL)。 在运行时,实时 (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++的性能优势,因为它使用与后台C++相同的或类似工具,如下表所示。

组件 .NET Native C++
图书馆 .NET Framework + Windows 运行时 Win32 + Windows 运行时
编译器 UTC 优化编译器 UTC 优化编译器
已部署 可运行的二进制文件 准备运行的二进制文件 (ASM)
运行时 MRT.dll (最小 CLR 运行时) CRT.dll (C 运行时)

对于 UWP 应用,将应用包(.msix 或 .appx 文件)中的 .NET 本机代码编译二进制文件上传到 Microsoft 应用商店。