包含可执行代码的可选包

包含可执行代码的可选包可用于划分大型或复杂的应用,或将添加到已发布的应用。 使用 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# 的可选代码包,请按照以下步骤来配置你的解决方案:

  1. 创建新 UWP 应用程序,将最低版本设置为 Windows 10 Fall Creators Update SDK(版本 16299)或更高版本。

  2. 将新的可选代码包(通用 Windows)项目添加到解决方案。 确保最低版本目标版本与主应用相匹配。

  3. 如果计划将应用提交到应用商店,请右键单击两个项目,并选择 "将 应用与应用商店关联 ..."

  4. 打开主应用的 Package.appxmanifest 文件并查找 Identity Name 值。 记下此值以供下一步使用。

  5. 打开可选应用包的 Package.appxmanifest 文件并查找 uap3:MainAppPackageDependency Name 值。 更新 uap3:MainAppPackageDependency Name 值以匹配上一步中主应用包的 Identity Name 值。

    以下是主应用的 Package.appxmanifestIdentity 示例。

    <Identity Name="12345.MainAppProject" Publisher="CN=PublisherName" Version="1.0.0.0" />
    

    可选应用包的 uap3:MainPackageDependency 需要更新以匹配主应用的 Identity

    <uap3:MainPackageDependency Name="12345.MainAppProjectTest" />
    
  6. Bundle.mapping.txt 文件添加到主应用。 请按照此相关集部分的步骤创建包含两个应用的相关集。

  7. 生成可选包项目,然后导航到生成输出中的包参考文件夹,位于 ..\[PathToOptionalPackageProject]\bin\[architecture]\[configuration]\Reference。 请注意,你可以在参考文件夹路径中选择任何体系结构,因为 .winmd 文件(步骤 8)是体系结构独立文件。

  8. 将主应用项目的参考添加到在此文件夹中找到的 .winmd 文件。 每次更改可选包项目中的 API 图面区域时,此 .winmd 文件.winmd进行更新。 此参考为主应用项目提供要编译的必要信息。

  9. 在主应用项目中,导航到项目生成属性,然后选择使用 .NET Native 工具链编译。 目前,仅 .NET Native 中的调试支持在 C# 中创建可选代码包。 转到项目调试属性,然后选择部署可选包。 这将确保不论你何时部署主应用项目,这两个包均保持同步。

完成这些步骤后,可以将代码添加到可选包项目中,就像它是一个托管 WinRT 组件项目一样。 若要访问主应用项目中的代码,调用可选包项目中公开的公共方法。