包含可执行代码的可选包
包含可执行代码的可选包对于拆分大型或复杂的应用,或者向已发布的应用添加新组件很有用。 使用 Visual Studio 2017 版本 15.7 和 .NET Native 2.1,你可以从 C++ 和 C# 可选程序包加载可执行代码。
先决条件
- Visual Studio 2019 或 Visual Studio 2017(版本 15.7 或更高版本)
- Windows 10 版本 1709 或更高版本
- Windows 10 SDK 版本 1709 或更高版本
若要获取最新的开发工具,请参阅适用于 Windows 10 的下载和工具。
注意
要将使用可选包和/或相关集的应用提交到 Store,您需要拥有权限。 如果未提交到 Store,则可选包和相关集可用于无需合作伙伴中心权限的业务线 (LOB) 或企业应用。 请参阅 Windows 开发人员支持,以获取权限提交使用可选包或相关集的应用。
注意
包含可执行代码的可选包必须是相关集的一部分。 除非是相关集的一部分,否则无法从可选包执行代码。
包含可执行代码的 C++ 可选包
若要从 C++ 可选包加载代码,请参阅 GitHub 上的 OptionalPackageSample 存储库。 OptionalPackageDLL 演示如何使用可从主包执行的代码來创建项目。 MyMainApp 项目演示如何从 OptionalPackageDLL.dll 文件加载代码。
包含可执行代码的 C# 可选包
要开始在 C# 中生成可选代码包,请执行以下步骤来配置解决方案:
创建新的 UWP 应用程序,并将最低版本设置为 Windows 10 Fall Creators Update SDK(内部版本 16299)或更高版本。
向解决方案添加新的可选代码包(通用 Windows)项目。 确保最低版本和目标版本与主应用的版本匹配。
如果计划将应用提交到应用 Store,请右键单击这两个项目并选择 Store -> 将应用与 Store 相关联...
打开主应用的
Package.appxmanifest
文件并查找Identity Name
值。 记下该值以供下一步使用。打开可选应用包的
Package.appxmanifest
文件并查找uap3:MainAppPackageDependency Name
值。 更新uap3:MainAppPackageDependency Name
值以匹配上一步主应用包的Identity Name
值。下面是主应用
Package.appxmanifest
的Identity
示例。<Identity Name="12345.MainAppProject" Publisher="CN=PublisherName" Version="1.0.0.0" />
需要更新可选应用包
uap3:MainPackageDependency
才能与主应用Identity
相匹配。<uap3:MainPackageDependency Name="12345.MainAppProjectTest" />
将一个
Bundle.mapping.txt
文件添加到主应用。 按照此相关集部分中的步骤创建包含这两个应用的相关集。生成可选包项目,然后从
..\[PathToOptionalPackageProject]\bin\[architecture]\[configuration]\Reference
中找到的版本输出中,导航到包“Reference”(引用)文件夹。 请注意,可以从“Reference”(引用)文件夹的路径中选择任何体系结构,因为.winmd
文件(步骤 8)独立于体系结构。将主应用项目中的引用添加到此文件夹中的
.winmd
文件。 每次更改可选包项目中的 API 外围应用时,都必须更新此.winmd
文件。 此引用提供了必要信息待编译的主应用项目。在主应用项目中,导航到项目版本属性,然后选择使用 .NET Native 工具链进行编译。 目前,在 C# 中创建可选代码包仅支持在 .NET Native 中进行调试。 转到项目调试属性并选择“部署可选包”。 这将确保两个包在部署主应用项目时能处于同步状态。
完成这些步骤后,您可以将代码添加到可选包项目中,就像它是托管的 WinRT 组件项目一样。 要访问主应用项目中的代码,请调用可选包项目中公开的公共方法。