Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе описываются свойства project, которые можно задать в файле Visual Studio project (например, .csproj или .vcxproj), чтобы настроить развертывание приложения, включая настройку автоинициализаторов.
Автоматические инициализаторы в Windows App SDK
В Windows App SDK есть несколько подпрограмм, задание которых заключается в том, чтобы убедиться, что среда выполнения Windows App правильно инициализирована. Эти подпрограммы называются автоматически инициализаторами, так как они выполняются автоматически до точки входа приложения и выполняют инициализацию для вас.
Подсказка
Если вы хотите узнать о технических деталях. В C++автоматический инициализатор реализуется с помощью конструктора статических классов. В C#автоматический инициализатор реализуется с инициализатором модуля .NET. Поэтому иногда можно услышать инициализатор модуля, когда правильный термин - автоинициализатор.
Все автоматические инициализаторы по умолчанию условно включены на основе конфигурации упаковки и развертывания вашего приложения. Ниже приведены сведения о них:
- Автоинициализатор начальной загрузки (также известный как динамические зависимости). Этот автоматический инициализатор вызывает API загрузчика автоматически при запуске приложения. Он необходим для непакованных приложений, зависящих от фреймворка, чтобы убедиться, что среда выполнения Windows App включена в граф пакетов приложения. Сведения о приложениях, зависящих от платформы (и автономных), см. в Windows App SDK обзоре развертывания. Сведения о распакованных (и упакованных) приложениях см. в статьях о приложениях Windows: упаковка, развертывание и процесс.
- Для упаковаемого приложения не требуется автоматический инициализатор загрузчика или динамических зависимостей, так как
appxmanifest.xmlфайл выражает зависимость платформы. И для автономного приложения не требуется автоматический инициализатор загрузчика или динамических зависимостей, так как эти приложения не используют платформу. - Вы можете отказаться от автоматической инициализации загрузчика или динамических зависимостей через
.csprojв вашем.vcxprojили<WindowsAppSdkBootstrapInitialize>false</WindowsAppSdkBootstrapInitialize>файле.
- Для упаковаемого приложения не требуется автоматический инициализатор загрузчика или динамических зависимостей, так как
- Автоматический инициализатор Диспетчера развертывания. Это необходимо для упакованных приложений, зависящих от платформы, использующих функции main/singleton (например, push-уведомлений), так как
appxmanifest.xmlфайл не может выразить эти зависимости.- Для автономного приложения не требуется автоматический инициализатор Диспетчера развертывания, так как эти приложения не поддерживают функции main/singleton.
- Дополнительные сведения см. в разделе Автоинициализатор Диспетчера развертывания далее в этом разделе.
- Автоматический инициализатор активации без регистрации. Это требуется для самодостаточного приложения, чтобы использовать активацию Windows Runtime (WinRT) без привязки и без регистрации на основе манифеста (UndockedRegFreeWinRT), если приложение работает на более старой версии операционной системы, предшествующей Windows 10 мая 2019 г. (версия 1903; кодовое имя "19H1").
- Для приложений, зависящих от платформы, и для автономных приложений, предназначенных для Windows 10 версии 1903 или более поздней версии, вам не нужен автоматический инициализатор активации без регистрации. Эти приложения могут отказаться от участия через
<WindowsAppSdkUndockedRegFreeWinRTInitialize>false</WindowsAppSdkUndockedRegFreeWinRTInitialize>.
- Для приложений, зависящих от платформы, и для автономных приложений, предназначенных для Windows 10 версии 1903 или более поздней версии, вам не нужен автоматический инициализатор активации без регистрации. Эти приложения могут отказаться от участия через
- Автоматический инициализатор совместимости. Это необходимо для того, чтобы приложение использовало средства хранения A/B для управления поведением выпуска обслуживания. Дополнительные сведения см. в разделе RuntimeCompatibilityOptions.
- Для приложений, не использующих A/B контейнеризацию (что является значением по умолчанию), вам не нужен автоинициализатор совместимости.
Автоматический инициализатор Диспетчера развертывания
Когда приложение, использующее Windows App SDK 1.8 или более поздней версии, запускается автоматический инициализатор Диспетчера развертывания по умолчанию. Но вы можете отказаться от этого. В этом разделе объясняются преимущества и предостережения использования автозапуска инициализатора Диспетчера развертывания, а также помогает принять решение, отказываться от этого или нет.
Чтобы приложение использовало функциональные возможности в пакетах Main/Singleton (например, push-уведомления): 1. Для развертывания этих пакетов необходимо использовать API развертывания (так как пакеты Main/Singleton не являются платформами, но "основными" пакетами, такими как приложения; поэтому они не могут быть зарегистрированы в виде зависимостей в манифесте appx приложения. Вместо этого API развертывания предоставляет функциональные возможности для развертывания этих пакетов. 2. Из-за 1, необходимо инициализировать диспетчер развертывания в приложении, вызвав DeploymentManager.Initialize. Приложение может сделать это автоматически или явно, как мы увидим. 3. Приложение должно быть пакетным приложением, зависящим от фреймворка, чтобы оно зависело от пакетов Main/Singleton.
Одним из способов инициализации диспетчера развертывания является разрешение запуска автоматического инициализатора Диспетчера развертывания (см. раздел Auto-initializers в Windows App SDK выше в этом разделе). Автоматический инициализатор Диспетчера развертывания вызывает DeploymentManager.Initialize для вас. Другой способ инициализации диспетчера развертывания — явно вызвать DeploymentManager.Initialize самостоятельно.
Если ваше приложение (используя Windows App SDK 1.8 или более поздней версии) не требует пакетов Main/Singleton, то вы должны отказаться от автоматического инициализатора Диспетчера развертывания, задав для свойства WindowsAppSdkDeploymentManagerInitialize значение false в файле проекта вашего приложения.
Если вашему приложению, использующему Windows App SDK версии 1.8 или более поздней, действительно требуются пакеты Main/Singleton, то вы можете:
- Разрешить автоматическому инициализатору диспетчера развертываний выполняться (по умолчанию)
- или отказаться от автоматического инициализатора диспетчера развертывания, задав для свойства WindowsAppSdkDeploymentManagerInitialize значение false в файле проекта приложения. Затем необходимо явно вызвать DeploymentManager.Initialize самостоятельно.
Это важно
Для любого процесса, выполняемого в AppContainer, при вызове DeploymentManager.Initialize приложение должно объявить packageManagementограниченную возможность в манифесте пакета.
Свойства проекта
В таблице ниже приведены свойства, которые можно задать в project файле приложения. Дополнительные сведения о автоинициализаторах в Windows App SDK см. в предыдущем разделе (выше).
| Имя и описание свойства | Ценности | Дополнительные сведения |
|---|---|---|
| AppxPackage. Указывает, упаковывается ли приложение WinUI. | false (для неупакованного приложения) или отсутствует (для упакованного приложения) | Распаковка приложения WinUI |
| EnableMsixTooling. Включает функцию MSIX для одного проекта. | true (для включения) или отсутствия (для отключения) | Упакуйте приложение с помощью однопроектного MSIX |
| UseWinUI. Указывает, используется ли платформа пользовательского интерфейса WinUI в приложении. | true, или отсутствует (для false) | WinUI в Windows App SDK (WinUI) |
| WindowsAppSdkBootstrapInitialize. Определяет, использует ли Windows App SDK автоматический инициализатор начальной загрузки/динамических зависимостей. | true (по умолчанию для исполняемых файлов), false (по умолчанию для не исполняемых файлов) | Отказ от (или выбор) автоматической инициализации |
| WindowsAppSdkDeploymentManagerInitialize. Определяет, используется ли или нет Windows App SDK автоматический инициализатор менеджера развертывания. | true (по умолчанию), false | |
| WindowsAppSDKRuntimePatchLevel1, WindowsAppSDKRuntimePatchLevel2 и WindowsAppSDKDisabledChanges. Определяет, использует ли Windows App SDK автоматический инициализатор совместимости, и настраивает необходимые параметры совместимости для поведения среды выполнения Windows App Runtime при изменениях, добавленных в обновления для обслуживания. | Разные значения или отсутствуют (для отключения автоинициализатора) | RuntimeCompatibilityOptions |
| WindowsAppSdkSelfContained. Определяет, развертывается ли приложение самостоятельно. | true, или отсутствует (для false) | руководство по развертыванию Windows App SDK для автономных приложений |
| WindowsAppSdkUndockedRegFreeWinRTInitialize. Определяет, использует ли Windows App SDK автоматический инициализатор активации без регистрации. | true (по умолчанию для исполняемых файлов), false (по умолчанию для не исполняемых файлов) | Отказ от или включение автоматической поддержки UndockedRegFreeWinRT |
WindowsPackageType. Настройка <WindowsPackageType>None</WindowsPackageType> для распакованного приложения приводит к тому, что автозагрузчик или автоматический инициализатор динамических зависимостей находит и загружает наиболее подходящую для вашего приложения версию Windows App SDK. |
Нет или отсутствует (для отключения автоматического инициализатора) |
Распаковка приложения WinUI За кулисами и отключение автоинициализаторов |
Example
Ниже приведен фрагмент из типичного файла .csproj для project C# WinUI 3, в котором показаны некоторые свойства project из приведенной выше таблицы.
...
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>
<TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
...
<UseWinUI>true</UseWinUI>
<EnableMsixTooling>true</EnableMsixTooling>
</PropertyGroup>
...
Связанные темы
- Общие сведения о развертывании
- Создайте свой первый проект WinUI (Windows App SDK)
- Упакуйте приложение с помощью однопроектного MSIX
- RuntimeCompatibilityOptions
- Использовать среду выполнения Windows App SDK для приложений с упаковкой во внешнем расположении или без упаковки
- руководство по развертыванию Windows App SDK для автономных приложений
- Обзор развертывания Windows App SDK
- Приложения Windows: упаковка, развертывание и процесс
- WinUI в Windows App SDK (WinUI)
Windows developer