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