Дополнительные пакеты с исполняемым кодом
Необязательные пакеты с исполняемым кодом полезны для деления большого или сложного приложения или добавления в приложение, которое уже опубликовано. С помощью 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.
Примечание.
Чтобы отправить приложение, использующее необязательные пакеты и /или связанные наборы в Магазин, вам потребуется разрешение. Необязательные пакеты и связанные наборы можно использовать для бизнес-приложений или корпоративных приложений без разрешения Центра партнеров, если они не отправляются в Магазин. Ознакомьтесь со службой поддержки разработчиков Windows, чтобы получить разрешение на отправку приложения, использующего необязательные пакеты и связанные наборы.
Примечание.
Необязательные пакеты, содержащие исполняемый код, должны быть частью связанного набора. Вы не сможете выполнять код из необязательного пакета, если он не является частью связанного набора.
Необязательные пакеты C++ с исполняемым кодом
Сведения о загрузке кода из необязательного пакета C++ см. в репозитории OptionalPackageSample на GitHub. В файле OptionalPackageDLL показано, как создать проект с кодом, который можно выполнить из основного пакета. Проект MyMainApp демонстрирует загрузку кода из файла OptionalPackageDLL.dll.
Необязательные пакеты C# с исполняемым кодом
Чтобы приступить к созданию необязательного пакета кода в C#, выполните следующие действия, чтобы настроить решение:
Создайте новое приложение UWP с минимальной версией, установленной в пакете SDK для Windows 10 Fall Creators Update (сборка 16299) или более поздней версии.
Добавьте в решение новый проект дополнительного пакета кода (универсальная версия Windows ). Убедитесь, что минимальная версия и целевая версия соответствуют версии основного приложения.
Если вы планируете отправить приложения в Магазин, щелкните правой кнопкой мыши оба проекта и выберите Store —> связать приложение с Магазином...
Package.appxmanifest
Откройте файл основного приложения и найдитеIdentity Name
значение. Запишите это значение для следующего шага.Откройте файл необязательного пакета
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" />
Добавьте файл в
Bundle.mapping.txt
основное приложение. Выполните действия, описанные в этом разделе "Связанные наборы" , чтобы создать связанный набор, содержащий оба приложения.Создайте необязательный проект пакета, а затем перейдите в папку "Справочник по пакету" в выходных данных сборки, найденной по адресу
..\[PathToOptionalPackageProject]\bin\[architecture]\[configuration]\Reference
. Обратите внимание, что вы можете выбрать любую архитектуру в пути к папке Reference, так как.winmd
файл (шаг 8) является независимым от архитектуры.Добавьте ссылку из основного проекта приложения в файл, найденный
.winmd
в этой папке. Каждый раз, когда вы изменяете область поверхности API в необязательном проекте пакета, этот.winmd
файл должен обновляться. Эта ссылка предоставляет основной проект приложения с необходимыми сведениями для компиляции.В основном проекте приложения перейдите к свойствам сборки проекта и выберите " Компиляция с помощью цепочки инструментов .NET Native". В настоящее время только отладка в .NET Native поддерживается для необязательного создания пакета кода в C#. Перейдите к свойствам отладки проекта и выберите " Развернуть необязательные пакеты". Это обеспечит синхронизацию обоих пакетов при развертывании основного проекта приложения.
После завершения этих действий можно добавить код в необязательный проект пакета, как если бы он был управляемым проектом компонента WinRT. Чтобы получить доступ к коду в основном проекте приложения, вызовите общедоступные методы, предоставляемые в необязательном проекте пакета.