包含可执行代码的可选包
包含可执行代码的可选包可用于划分大型或复杂的应用,或将添加到已发布的应用。 使用 Visual Studio 2017 版本 15.7 和 .NET Native 2.1,你可以从 C++ 和 C# 可选包加载可执行代码。
先决条件
- Visual Studio 2019 或 Visual Studio 2017 (版本15.7 或更高版本)
- Windows 10 版本 1709 或更高版本
- Windows 10,版本 1709 SDK 或更高版本
若要获取最新的开发工具,请参阅适用于 Windows 10 的下载和工具。
注意
若要将使用可选包和/或相关集的应用提交到 Microsoft Store,你需要权限。 可选包和相关集可用于业务线 (LOB) 或无合作伙伴中心权限的企业应用(如果未提交到商店)。 请参阅 Windows 开发人员支持,获取提交使用可选包和相关集的应用的权限。
注意
包含可执行代码的可选包必须是 相关集的一部分。 你将无法从可选包执行代码,除非它是相关集的一部分。
包含可执行代码的 C++ 可选包
若要从 C++ 可选包加载代码,请参阅 GitHub 上的 OptionalPackageSample 存储库。 OptionalPackageDLL 展示如何使用可从主要包执行的代码创建项目。 MyMainApp 项目演示如何从 OptionalPackageDLL.dll 文件加载代码。
包含可执行代码的 C# 可选包
若要开始生成使用 C# 的可选代码包,请按照以下步骤来配置你的解决方案:
创建新 UWP 应用程序,将最低版本设置为 Windows 10 Fall Creators Update SDK(版本 16299)或更高版本。
将新的可选代码包(通用 Windows)项目添加到解决方案。 确保最低版本和目标版本与主应用相匹配。
如果计划将应用提交到应用商店,请右键单击两个项目,并选择 "将 应用与应用商店关联 ..."
打开主应用的
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
。 请注意,你可以在参考文件夹路径中选择任何体系结构,因为.winmd
文件(步骤 8)是体系结构独立文件。将主应用项目的参考添加到在此文件夹中找到的
.winmd
文件。 每次更改可选包项目中的 API 图面区域时,此.winmd
文件.winmd
进行更新。 此参考为主应用项目提供要编译的必要信息。在主应用项目中,导航到项目生成属性,然后选择使用 .NET Native 工具链编译。 目前,仅 .NET Native 中的调试支持在 C# 中创建可选代码包。 转到项目调试属性,然后选择部署可选包。 这将确保不论你何时部署主应用项目,这两个包均保持同步。
完成这些步骤后,可以将代码添加到可选包项目中,就像它是一个托管 WinRT 组件项目一样。 若要访问主应用项目中的代码,调用可选包项目中公开的公共方法。