.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 应用商店。