自定义 SDK 版本
需要进行架构审查:本文档旨在支持针对 React Native 的“旧”或“遗留”架构的开发。它可能适用也可能不适用于新架构的开发,需要审查并可能需要更新。有关 React Native Windows 中 React Native 架构的信息,请参阅新旧架构。
应用程序可以轻松自定义要使用的 Windows SDK 和 WinUI 2.x 版本。
详情
每个应用程序都有一个 ExperimentalFeatures.props
文件,它描述了应用程序所依赖的不同 SDK 和库版本。此文件位于与应用程序的 .sln
文件相同的目录中。
在 0.64.3+ 中创建的原生模块将在构建时(当它们链接到应用程序时)定位并导入此文件。这意味着原生模块将最终使用应用程序选择的 Windows SDK 版本和 WinUI 2.x 版本。
ExperimentalFeatures.props
文件可用于设置许多决定使用哪些依赖项的属性,包括:
属性名称 | 描述 |
---|---|
WinUI2xVersion | 要使用的 WinUI 2.x 包版本,例如 2.6.0 |
WindowsTargetPlatformVersion | 要使用的 Windows 平台 SDK 版本,例如 10.0.19041.0 |
UseHermes | 是否使用 Hermes JavaScript 引擎。 |
其他属性
您可以向此文件添加其他属性,应用程序及其链接模块将在构建时使用这些属性。为确保您输入的属性值被使用,请确保:
- 在包含
ExperimentalFeatures.props
后属性未被重置,或 - 仅当属性为空时才重置属性(例如
Condition="'$(MyProperty)'=''"
)
故障排除与构建调试
您可以通过生成二进制构建日志(运行 CLI 构建会生成此日志)并在 MSBuild 结构化日志查看器中打开生成的 .binlog
文件来深入了解构建过程中属性的状态。属性和目标
更新您的应用程序
使用依赖项涉及以下两个任务:
- 引用适当的 NuGet 包,以便下载它。
- 导入包的构建属性和目标。
对于 C# 应用程序,由于内置的 <PackageReference>
支持,这两个步骤是合并的。但是,C# 应用程序将 NuGet 包恢复到用户配置文件下的位置,而 C++ 项目则期望 NuGet 包位于解决方案目录中。实现 RNW 框架的 Microsoft.ReactNative
项目是一个 C++ 项目,因此它需要能够在解决方案的 packages
目录中找到 WinUI 包。解决此问题的一种方法是编辑文件 node_modules\react-native-windows\Microsoft.ReactNative\packages.config
以更新 WinUI 版本并使其正确恢复到解决方案目录。
C++ 应用程序使用 packages.config
来指定 NuGet 包集,然后手动从包中导入正确的 .props
和 .targets
文件。
当您创建 C# 或 C++ React Native for Windows 应用程序时,它以 WinUI 版本参数化(即它取决于 WinUI2xVersion
属性的值)的方式编写。
对于 C++ 应用程序,除了设置属性值之外,您还需要修改位于应用程序项目 .vcxproj
文件旁边的 packages.config
文件,以指向更新的包版本。
windows\ExperimentalFeatures.props
<PropertyGroup>
<!-- other properties -->
<WinUI2xVersion>2.6.0</WinUI2xVersion>
</PropertyGroup>