使用 .NET Native 编译应用
.NET Native 是用于构建和部署 UWP 应用的预编译技术。 .NET Native 包含在 Visual Studio 2015 及更高版本中。 它会自动将使用托管代码(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 应用,请将应用包中的 .NET Native 代码编译二进制文件(.msix 或 .appx 文件)上传到 Microsoft Store。