Partager via


Propriétés de projet et initialiseurs automatiques

Cette rubrique décrit les propriétés du projet que vous pouvez définir dans votre fichier projet Visual Studio (par .csproj exemple) .vcxprojafin de personnaliser la façon dont votre application est déployée, notamment la configuration des initialiseurs automatiques.

Initialiseurs automatiques dans le Kit de développement logiciel (SDK) d’application Windows

Dans le Kit de développement logiciel (SDK) d’application Windows, il existe plusieurs routines dont le travail consiste à s’assurer que Windows App Runtime est correctement initialisé. Ces routines sont appelées initialiseurs automatiques, car elles s’exécutent automatiquement avant le point d’entrée de votre application et effectuent un travail d’initialisation pour vous.

Conseil / Astuce

Si vous êtes curieux de détails techniques. En C++, un initialiseur automatique est implémenté avec un constructeur de classe statique. En C#, un initialiseur automatique est implémenté avec un initialiseur de module .NET. Vous pouvez donc parfois entendre l’initialiseur de module utilisé lorsque le terme approprié est l’initialiseur automatique.

Tous les initialiseurs automatiques sont activés de manière conditionnelle par défaut, en fonction de la configuration d’empaquetage et de déploiement de votre application. Voici des détails sur ceux-ci :

  • Initialiseur automatique (également appelé dépendances dynamiques). Cet initialiseur automatique appelle automatiquement l’API de programme d’amorçage au démarrage de l’application. Il est nécessaire pour les applications non empaquetées dépendantes de l’infrastructure, afin de s’assurer que Windows App Runtime est ajouté au graphe de package de l’application. Pour plus d’informations sur les applications dépendantes de l’infrastructure (et autonomes), consultez la vue d’ensemble du déploiement du Kit de développement logiciel (SDK) d’application Windows. Pour plus d’informations sur les applications non empaquetées (et empaquetées), consultez les applications Windows : empaquetage, déploiement et processus.
    • Pour une application empaquetée, vous n’avez pas besoin de l’initialiseur automatique des dépendances de démarrage/de dépendances dynamiques, car le appxmanifest.xml fichier exprime la dépendance du framework. Et pour une application autonome, vous n’avez pas besoin de l’initialiseur auto-initialiseur des dépendances de démarrage/dynamiques, car ces applications n’utilisent pas l’infrastructure.
    • Vous pouvez désactiver le programme d’amorçage/l’initialiseur automatique des dépendances dynamiques dans votre .csproj ou .vcxproj fichier via <WindowsAppSdkBootstrapInitialize>false</WindowsAppSdkBootstrapInitialize>.
  • Initialiseur automatique du Gestionnaire de déploiement. Cela est nécessaire pour les applications empaquetées dépendantes de l’infrastructure qui utilisent la fonctionnalité main/singleton (par exemple, les notifications Push), car le appxmanifest.xml fichier ne peut pas exprimer ces dépendances.
    • Pour une application autonome, vous n’avez pas besoin de l’initialiseur auto-initialiseur Du Gestionnaire de déploiement, car ces applications ne prennent pas en charge les fonctionnalités principales/singleton.
    • Pour plus d'informations plus importantes, consultez la section Initialisation automatique du Gestionnaire de déploiement plus loin dans cette rubrique.
  • Initialiseur automatique d’activation sans inscription. Cela est nécessaire pour qu’une application autonome utilise l’activation Windows Runtime (WinRT) sans inscription sans manifeste (UndockedRegFreeWinRT), si l’application est en cours d’exécution sur une version du système d’exploitation antérieure à Windows 10 mai 2019 Update (version 1903 ; code nommé « 19H1 »).
    • Pour les applications dépendantes de l’infrastructure et pour les applications autonomes qui ciblent Windows 10, version 1903 ou ultérieure, vous n’avez pas besoin de l’initialiseur d’activation sans inscription. Ces applications peuvent refuser via <WindowsAppSdkUndockedRegFreeWinRTInitialize>false</WindowsAppSdkUndockedRegFreeWinRTInitialize>.
  • Initialiseur automatique de compatibilité. Cela est nécessaire pour qu’une application utilise des installations de confinement A/B pour contrôler le comportement de mise en production de maintenance. Pour plus d’informations, consultez RuntimeCompatibilityOptions.
    • Pour les applications qui n’utilisent pas le conteneur A/B (qui est la valeur par défaut), vous n’avez pas besoin de l’initialiseur automatique de compatibilité.

Initialiseur automatique du Gestionnaire de déploiement

Lorsqu’une application qui utilise le Kit de développement logiciel (SDK) d’application Windows 1.8 ou version ultérieure démarre, l’initialiseur du Gestionnaire de déploiement s’exécute par défaut. Mais vous pouvez choisir de ne pas participer à cela. Cette section explique les avantages et les inconvénients de l’activation de l’auto-initialisateur du Gestionnaire de déploiement, et vous aide à décider s’il faut ou non se désinscrire.

Pour que votre application utilise des fonctionnalités dans les packages Main/Singleton (par exemple, les notifications Push) : 1. Vous devez utiliser l’API de déploiement pour vous assurer que ces packages sont déployés (car les packages Main/Singleton ne sont pas des frameworks, mais des packages « principaux », tels que des applications ; ils ne peuvent donc pas être inscrits en tant que dépendances dans le manifeste appx de votre application. Au lieu de cela, l’API de déploiement fournit la fonctionnalité de déploiement de ces packages). 2. En raison de 1), votre application doit initialiser le Gestionnaire de déploiement en provoquant l’appel de DeploymentManager.Initialize . Votre application peut le faire automatiquement, ou explicitement, comme nous le verrons. 3. Votre application doit être une application empaquetée dépendante de l’infrastructure afin qu’elle prenne une dépendance sur les packages Main/Singleton.

L’une des méthodes d’initialisation du Gestionnaire de déploiement consiste à autoriser l’initialiseur Du Gestionnaire de déploiement à s’exécuter (consultez la section Initialiseurs automatiques dans le Kit de développement logiciel (SDK) de l’application Windows plus haut dans cette rubrique. L'auto-initialiseur du Gestionnaire de déploiement appelle DeploymentManager.Initialize pour vous. L’autre façon d’initialiser le Gestionnaire de déploiement consiste à appeler explicitement DeploymentManager.Initialize vous-même .

Si votre application (à l’aide du Kit de développement logiciel (SDK) d’application Windows 1.8 ou version ultérieure n’a pas besoin des packages Main/Singleton, vous devez refuser l’initialiseur du Gestionnaire de déploiement en définissant la propriété WindowsAppSdkDeploymentManagerInitialize sur false dans le fichier projet de votre application.

Si votre application (à l’aide du Kit de développement logiciel (SDK) d’application Windows 1.8 ou version plus récente) nécessite les packages Main/Singleton, vous pouvez :

  • Autoriser l’initialiseur du Gestionnaire de déploiement à s’exécuter, ce qu'il fait par défaut.
  • ou désactivez l’initialiseur automatique du Gestionnaire de déploiement en définissant la propriété WindowsAppSdkDeploymentManagerInitialize sur false dans le fichier projet de votre application. Vous devez ensuite vous-même appeler explicitement DeploymentManager.Initialize.

Important

Pour tout processus en cours d’exécution dans AppContainer, si vous provoquez l’appel de DeploymentManager.Initialize , votre application doit déclarer la packageManagementfonctionnalité restreinte dans le manifeste de votre package.

Propriétés du projet

Dans le tableau ci-dessous figurent les propriétés que vous pouvez définir dans le fichier projet de votre application. Consultez la section précédente (ci-dessus) pour plus d’informations sur les initialiseurs automatiques dans le Kit de développement logiciel (SDK) d’application Windows.

Nom et description de la propriété Valeurs Pour plus d’informations
AppxPackage. Spécifie si une application WinUI 3 est empaquetée ou non. false (pour une application non empaquetée) ou absent (pour une application empaquetée) Annuler le package d’une application WinUI
EnableMsixTooling. Active la fonctionnalité MSIX à projet unique pour un projet. true (pour activer) ou absent (pour désactiver) Empaqueter votre application à l’aide de MSIX à projet unique
UseWinUI. Spécifie si vous utilisez l’infrastructure d’interface utilisateur WinUI 3 dans votre application. true, ou absent (pour false) WinUI dans le Kit de développement logiciel (SDK) d’application Windows (WinUI 3)
WindowsAppSdkBootstrapInitialize. Détermine si le Kit de développement logiciel (SDK) d’application Windows tire parti du programme d’amorçage/du initialiseur automatique des dépendances dynamiques. true (valeur par défaut pour les exécutables), false (valeur par défaut pour les non-exécutables) Désactivation des initialiseurs automatiques (ou dans)
WindowsAppSdkDeploymentManagerInitialize. Détermine si le Kit de développement logiciel (SDK) de l’application Windows tire parti de l’initialiseur automatique du Gestionnaire de déploiement. true (valeur par défaut), false
WindowsAppSDKRuntimePatchLevel1, WindowsAppSDKRuntimePatchLevel2 et WindowsAppSDKDisabledChanges. Détermine si le SDK d’application Windows tire parti de l’initialiseur automatique de compatibilité et configure toutes les options de compatibilité souhaitées pour le comportement de Windows App Runtime des modifications ajoutées dans les mises à jour de maintenance. Divers ou absents (pour désactiver l’initialiseur automatique) RuntimeCompatibilityOptions
WindowsAppSdkSelfContained. Détermine si une application est déployée autonome ou non. true, ou absent (pour false) Guide de déploiement du Kit de développement logiciel (SDK) d’application Windows pour les applications autonomes
WindowsAppSdkUndockedRegFreeWinRTInitialize. Détermine si le Kit de développement logiciel (SDK) de l’application Windows tire parti de l’initialiseur automatique d’activation sans inscription. true (valeur par défaut pour les exécutables), false (valeur par défaut pour les non-exécutables) Désactivation de la prise en charge automatique d’UndockedRegFreeWinRT
WindowsPackageType. La définition <WindowsPackageType>None</WindowsPackageType> d’une application non empaquetée entraîne l’initialiseur automatique des dépendances de démarrage/dynamiques à localiser et à charger une version du Kit de développement logiciel (SDK) d’application Windows qui convient le mieux à votre application. Aucun ou absent (pour désactiver l’initialiseur automatique) Annuler le package d’une application WinUI

En arrière-plan, et en optant pour les initialiseurs automatiques

Example

Voici un extrait d’un fichier classique .csproj pour un projet WinUI 3 C#, montrant certaines des propriétés du projet du tableau ci-dessus en cours d’utilisation.

...
<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>
...