Дополнительные пакеты с исполняемым кодом

Необязательные пакеты с исполняемым кодом полезны для разделения большого или сложного приложения или для добавления в уже опубликованное приложение. С помощью Visual Studio 2017 версии 15.7 и .NET Native 2.1 можно загрузить исполняемый код из дополнительных пакетов C++ и C#.

Предварительные требования

  • Visual Studio 2019 или Visual Studio 2017 (версия 15,7 или более поздняя)
  • Windows 10 версии 1709 и выше
  • пакет SDK для Windows 10 версии 1709 или более поздней

Чтобы скачать самые последние средства для разработки, см. раздел Загружаемые файлы и инструменты для Windows 10.

Примечание

Чтобы отправить приложение, использующее дополнительные пакеты и (или) связанные наборы, в Store, вам потребуется разрешение. Необязательные пакеты и связанные наборы можно использовать для бизнес-приложений или корпоративных приложения без разрешения центра партнеров, если они не отправлены в магазин. Для получения разрешения на отправку приложений, использующих дополнительные пакеты и связанные наборы, см. раздел Поддержка разработчиков для Windows.

Примечание

Необязательные пакеты, содержащие исполняемый код, должны быть частью связанного набора. Вы не сможете выполнить код из необязательного пакета, если он не является частью связанного набора.

Дополнительные пакеты C++ с исполняемым кодом

Для загрузки кода из дополнительного пакета C++ см. репозиторий OptionalPackageSample на GitHub. OptionalPackageDLL показывает, как создать проект с кодом, который можно исполнить из основного пакета. Проект MyMainApp демонстрирует, как загрузить код из файла OptionalPackageDLL.dll.

Дополнительные пакеты C# с исполняемым кодом

Чтобы приступить к созданию дополнительного пакета с кодом на C#, выполните следующие действия для настройки решения:

  1. Создайте новое приложение UWP, задав для него минимальную версию ОС: Windows 10 Fall Creators Update SDK (сборка 16299) или выше.

  2. Добавьте новый проект Дополнительный пакет с кодом (Universal Windows) в решение. Убедитесь, что Минимальная версия и Целевая версия совпадают с соответствующими версиями основного приложения.

  3. Если вы планируете отправлять приложения в магазин, щелкните правой кнопкой мыши оба проекта и выберите магазин связать приложение с магазином...

  4. Откройте файл Package.appxmanifest основного приложения и найдите значение Identity Name. Запишите это значение, чтобы применить его в ходе следующего шага.

  5. Откройте дополнительный пакет приложения Package.appxmanifest и найдите значение uap3:MainAppPackageDependency Name. Обновите значение uap3:MainAppPackageDependency Name в соответствии со значением Identity Name пакета основного приложения из предыдущего шага.

    Вот пример Identityиз Package.appxmanifest основного приложения.

    <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. В настоящее время для создания дополнительного пакета с кодом на C# поддерживается только отладка в .NET Native. Перейдите к свойствам отладки проекта и выберите Развернуть дополнительные пакеты. Это гарантирует, что оба пакета будут синхронизированы при каждом развертывании проекта основного приложения.

После выполнения этих действий можно добавить код в необязательный проект пакета, как если бы он был управляемым проектом компонента WinRT. Для доступа к коду в проекте основного приложения вызовите открытые методы, предоставляемые в проекте дополнительного пакета.