使用 .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。