Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Thema werden die Projekteigenschaften beschrieben, die Sie in Ihrer Visual Studio-Projektdatei (z .csproj . B. oder .vcxproj) festlegen können, um die Bereitstellung Ihrer App anzupassen, einschließlich der Konfiguration von automatischen Initialisierern.
Automatische Initialisierer im Windows App SDK
Im Windows App SDK gibt es mehrere Routinen, deren Aufgabe es ist, sicherzustellen, dass die Windows-App-Runtime ordnungsgemäß initialisiert ist. Diese Routinen werden als automatische Initialisierer bezeichnet, da sie automatisch vor dem Einstiegspunkt Ihrer Anwendung ausgeführt werden und initialisiert werden.
Tipp
Für den Fall, dass Sie auf technische Details neugierig sind. In C++ wird ein autoinitialisierer mit einem statischen Klassenkonstruktor implementiert. In C# wird ein autoinitialisierer mit einem .NET-Modulinitialisierer implementiert. Daher hören Sie manchmal den Modulinitialisierer , der verwendet wird, wenn der richtige Begriff automatisch initialisiert wird.
Alle automatischen Initialisierer sind standardmäßig bedingt aktiviert, basierend auf der Paket- und Bereitstellungskonfiguration Ihrer App. Hier sind Details zu ihnen:
- Bootstrapper (auch als dynamische Abhängigkeiten bezeichnet) autoinitialisierer. Dieser automatische Initialisierer ruft die Bootstrapper-API automatisch beim App-Start auf. Sie ist für frameworkabhängige entpackte Apps erforderlich, um sicherzustellen, dass die Windows-App-Runtime dem Paketdiagramm der App hinzugefügt wird. Informationen zu frameworkabhängigen (und eigenständigen) Apps finden Sie in der Übersicht über die Windows App SDK-Bereitstellung. Informationen zu entpackten (und verpackten) Apps finden Sie unter Windows-Apps: Verpacken, Bereitstellung und Prozess.
- Für eine verpackte App benötigen Sie den autoinitialisierer/dynamischen Bootstrapper/dynamische Abhängigkeiten nicht, da die
appxmanifest.xmlDatei die Frameworkabhängigkeit ausdrückt. Und für eine eigenständige App benötigen Sie nicht den autoinitialisierer/dynamischen Bootstrapper/dynamische Abhängigkeiten, da diese Apps das Framework nicht verwenden. - Sie können den autoinitialisierer/dynamischen Abhängigkeiten in Ihrer
.csprojDatei.vcxprojüber<WindowsAppSdkBootstrapInitialize>false</WindowsAppSdkBootstrapInitialize>den Bootstrapper/dynamische Abhängigkeiten deaktivieren.
- Für eine verpackte App benötigen Sie den autoinitialisierer/dynamischen Bootstrapper/dynamische Abhängigkeiten nicht, da die
- Automatische Initialisierung des Bereitstellungs-Managers. Dies ist für frameworkabhängige verpackte Apps erforderlich, die die Haupt-/Singleton-Funktionalität (z. B. Pushbenachrichtigungen) verwenden, da die
appxmanifest.xmlDatei diese Abhängigkeiten nicht ausdrücken kann.- Für eine eigenständige App benötigen Sie den automatischen Bereitstellungs-Manager-Initialisierer nicht, da diese Apps die Haupt-/Singleton-Funktionalität nicht unterstützen.
- Weitere wichtige Informationen finden Sie im Abschnitt "Automatische Initialisierung des Deployment Manager " weiter unten in diesem Thema.
- Autoinitialisierer für die registrierungsfreie Aktivierung. Dies ist erforderlich, damit eine eigenständige App die manifestbasierte und abgedockene Windows-Runtime(WinRT)-Aktivierung (UndockedRegFreeWinRT) verwendet, wenn die App auf einer Betriebssystemversion vor Windows 10 Mai 2019 Update (Version 1903; Codename "19H1") ausgeführt wird.
- Für frameworkabhängige Apps und für eigenständige Apps, die auf Windows 10, Version 1903 oder höher abzielen, benötigen Sie den automatischen Initialisierer für die registrierungsfreie Aktivierung nicht. Diese Apps können sich über
<WindowsAppSdkUndockedRegFreeWinRTInitialize>false</WindowsAppSdkUndockedRegFreeWinRTInitialize>die App abmelden.
- Für frameworkabhängige Apps und für eigenständige Apps, die auf Windows 10, Version 1903 oder höher abzielen, benötigen Sie den automatischen Initialisierer für die registrierungsfreie Aktivierung nicht. Diese Apps können sich über
- Automatischer Kompatibilitätsinitialisierer. Dies ist erforderlich, damit eine App A/B-Eindämmungseinrichtungen verwendet, um das Wartungsfreigabeverhalten zu steuern. Weitere Informationen finden Sie unter RuntimeCompatibilityOptions.
- Für Apps, die keine A/B-Eindämmung verwenden (die Standardeinstellung ist), benötigen Sie den automatischen Kompatibilitätsinitialisierer nicht.
Der automatische Initialisierer des Bereitstellungsmanagers
Wenn eine App, die das Windows App SDK 1.8 oder höher verwendet, gestartet wird, wird der automatische Initialisierungs-Manager standardmäßig ausgeführt. Aber Sie können ablehnen, dass dies geschieht. In diesem Abschnitt werden die Vorteile und Einschränkungen erläutert, mit denen der automatische Initialisierungs-Manager des Deployment Manager ausgeführt werden kann, und es hilft Ihnen zu entscheiden, ob sie sich abmelden möchten.
Damit Ihre App Funktionen in den Main/Singleton-Paketen (z. B. Pushbenachrichtigungen) nutzen kann: 1. Sie müssen die Bereitstellungs-API verwenden, um sicherzustellen, dass diese Pakete bereitgestellt werden (da die Main/Singleton-Pakete keine Frameworks, sondern "Hauptpakete" sind, z. B. Apps; daher können sie nicht als Abhängigkeiten im Appx-Manifest Ihrer App registriert werden. Stattdessen stellt die Bereitstellungs-API die Funktionalität bereit, um diese Pakete bereitzustellen). 2. Aufgrund von 1 muss Ihre App den Bereitstellungs-Manager initialisieren, indem DeploymentManager.Initialize aufgerufen wird. Ihre App kann dies entweder automatisch oder explizit tun, wie wir sehen. 3. Ihre App muss eine Framework-abhängige, paketierte Anwendung sein, damit sie eine Abhängigkeit von den Main-/Singleton-Paketen hat.
Eine Möglichkeit zum Initialisieren des Bereitstellungs-Managers besteht darin, die Automatische Initialisierung des Bereitstellungs-Managers zuzulassen (siehe Abschnitt Autoinitialisierer im Windows App SDK weiter oben in diesem Thema). Der Auto-Initializer des Deployment Managers ruft DeploymentManager.Initialize für Sie auf. Die andere Möglichkeit zum Initialisieren des Bereitstellungs-Managers besteht darin, "DeploymentManager.Initialize " explizit aufzurufen.
Wenn Ihre App (mit dem Windows App SDK 1.8 oder höher) die Main/Singleton-Pakete nicht benötigt, sollten Sie die Initialisierung durch den Bereitstellungs-Manager deaktivieren, indem Sie die Eigenschaft WindowsAppSdkDeploymentManagerInitialize in der Projektdatei Ihrer App auf false setzen.
Wenn Ihre App (mit dem Windows App SDK 1.8 oder höher) die Main/Singleton-Pakete benötigt, können Sie eine der folgenden Aktionen ausführen:
- Gestatten Sie, dass der Bereitstellungs-Manager-Autoinitialisierer läuft, was er standardmäßig tut.
- oder deaktivieren Sie die automatische Initialisierung des Deployment Managers, indem Sie die Eigenschaft WindowsAppSdkDeploymentManagerInitialize in der Projektdatei Ihrer App auf false festlegen. Anschließend sollten Sie "DeploymentManager.Initialize" explizit aufrufen.
Von Bedeutung
Für jeden Prozess, der im AppContainer ausgeführt wird, müssen Sie sicherstellen, dass DeploymentManager.Initialize aufgerufen wird, dann muss Ihre App die packageManagement im Paketmanifest deklarieren.
Projekteigenschaften
In der folgenden Tabelle sind die Eigenschaften aufgeführt, die Sie in der Projektdatei Ihrer App festlegen können. Ausführliche Informationen zu den automatischen Initialisierern im Windows App SDK finden Sie im vorherigen Abschnitt (oben).
| Eigenschaftenname und -beschreibung | Werte | Weitere Informationen |
|---|---|---|
| AppxPackage. Gibt an, ob eine WinUI 3-App verpackt ist. | false (für eine entpackte App) oder nicht vorhanden (für eine verpackte App) | Entpacken einer WinUI-App |
| EnableMsixTooling. Aktiviert das MSIX-Feature für ein Projekt mit einem Projekt. | true (zum Aktivieren) oder nicht vorhanden (zum Deaktivieren) | Packen Der App mithilfe von MSIX mit einem Projekt |
| UseWinUI. Gibt an, ob Sie das WinUI 3-Benutzeroberflächenframework in Ihrer App verwenden. | wahr oder nicht vorhanden (für "false") | WinUI im Windows App SDK (WinUI 3) |
| WindowsAppSdkBootstrapInitialize. Bestimmt, ob das Windows App SDK den autoinitialisierer automatischen Bootstrapper/dynamische Abhängigkeiten nutzt. | true (standard für ausführbare Dateien), false (standard für nicht ausführbare Dateien) | Deaktivieren von automatischen Initialisierern (oder in) |
| WindowsAppSdkDeploymentManagerInitialize. Bestimmt, ob das Windows App SDK den Auto-Initialisierer des Deployment Managers verwendet. | true (Standard), false | |
| WindowsAppSDKRuntimePatchLevel1, WindowsAppSDKRuntimePatchLevel2 und WindowsAppSDKDisabledChanges. Bestimmt, ob das Windows App SDK den automatischen Kompatibilitätsinitialisierer nutzt, und konfiguriert alle gewünschten Kompatibilitätsoptionen für das Verhalten der Windows-App-Runtime von Änderungen, die in Wartungsupdates hinzugefügt wurden. | Verschiedene oder nicht vorhanden (zum Deaktivieren des automatischen Initialisierungsprogramms) | RuntimeCompatibilityOptions |
| WindowsAppSdkSelfContained. Bestimmt, ob eine App eigenständig bereitgestellt wird. | wahr oder nicht vorhanden (für "false") | Bereitstellungshandbuch für eigenständige Apps im Windows App SDK |
| WindowsAppSdkUndockedRegFreeWinRTInitialize. Bestimmt, ob das Windows App SDK den automatischen Initialisierer für die registrierungsfreie Aktivierung nutzt. | true (standard für ausführbare Dateien), false (standard für nicht ausführbare Dateien) | Deaktivieren der automatischen UndockedRegFreeWinRT-Unterstützung |
WindowsPackageType. Die Einstellung <WindowsPackageType>None</WindowsPackageType> für eine entpackte App bewirkt, dass der automatische Initialisierungsprogramm für bootstrapper/dynamische Abhängigkeiten eine Version der Windows App SDK-Version sucht und lädt, die für Ihre App am besten geeignet ist. |
Keine oder nicht vorhanden (zum Deaktivieren des automatischen Initialisierungsprogramms) |
Entpacken einer WinUI-App Hinter den Kulissen und Deaktivieren der automatischen Initialisierung |
Example
Hier ist ein Auszug aus einer typischen .csproj Datei für ein C#WinUI 3-Projekt, in dem einige der Projekteigenschaften aus der obigen Tabelle angezeigt werden.
...
<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>
...
Zugehörige Themen
- Übersicht über die Bereitstellung
- Erstellen Ihres ersten WinUI 3 (Windows App SDK)-Projekts
- Packen Der App mithilfe von MSIX mit einem Projekt
- RuntimeCompatibilityOptions
- Verwenden Sie die Windows App SDK-Laufzeitumgebung für Apps, die mit einem externen Speicherort verpackt oder ohne Verpackung sind
- Bereitstellungshandbuch für eigenständige Apps im Windows App SDK
- Übersicht über die Bereitstellung des Windows App SDK
- Windows-Apps: Verpacken, Bereitstellung und Prozess
- WinUI im Windows App SDK (WinUI 3)
Windows developer