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.
Ein Windows App SDK-Projekt ist standardmäßig frameworkabhängig. Um zur eigenständigen Bereitstellung zu wechseln, führen Sie die folgenden Schritte aus (die Begriffe frameworkabhängig und eigenständig werden in Übersicht über die Windows App SDK-Bereitstellungbeschrieben).
- Klicken Sie in Visual Studio mit der rechten Maustaste auf den App-Projektknoten, und klicken Sie auf "Projektdatei bearbeiten ", um die App-Projektdatei zur Bearbeitung zu öffnen. Klicken Sie für ein C++-Projekt zuerst auf Projektentladen.
- In der Projektdatei der App fügen Sie innerhalb des Hauptbereichs
PropertyGroup
das Element<WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained>
hinzu, wie im folgenden Screenshot gezeigt.
- Speichern und schließen Sie die Projektdatei.
- Klicken Sie auf Projekterneut laden.
- Wenn Sie ein Windows Application Packaging Project verwenden (und nicht das Einzelprojekt MSIX, das Sie mit Blank App, paketiert (WinUI 3 auf dem Desktop)erhalten), nehmen Sie alle obigen Änderungen auch in der Projektdatei für das Verpackungsprojekt vor.
Hinweis
Bibliotheksprojekte sollten nicht geändert werden. Eigenständige Bereitstellung sollte nur in App-Projekten (und gegebenenfalls in einem Windows-Anwendungs-Verpackungsprojekt) konfiguriert werden.
Beispiele für Apps finden Sie unter eigenständigen Windows App SDK-Bereitstellungsbeispiele.
Nachdem Sie die WindowsAppSDKSelfContained
-Eigenschaft auf true
in Ihrer Projektdatei festgelegt haben, werden die Inhalte des Windows App SDK Framework-Pakets in die Build-Ausgabe extrahiert und als Teil Ihrer Anwendung bereitgestellt.
Hinweis
.NET-Apps müssen als eigenständige veröffentlicht werden, um vollständig eigenständig zu sein. In diesem Beispiel erfahren Sie, wie Sie .NET eigenständig mit Veröffentlichungsprofilen konfigurieren.
dotnet publish
wird mit Windows App SDK 1.1 noch nicht unterstützt.
Hinweis
C++-Apps müssen auch die hybriden CRT- verwenden, um vollständig eigenständig zu sein. Das Importieren HybridCRT.props aus Directory.Build.props ist die empfohlene Methode zum Konfigurieren für alle Projekte in einer Lösung (siehe ein Beispiel in Directory.Build.props). Eine verpackte App muss auch <UseCrtSDKReferenceStaticWarning>false</UseCrtSDKReferenceStaticWarning>
in ihrer Projektdatei festlegen. Sehen Sie sich die eigenständige Bereitstellung Beispiel-App an, um die Hybrid-CRT zu verwenden.
Wenn Ihre App verpackt ist (weitere Informationen finden Sie in der Übersicht über die Bereitstellung), werden die Windows App SDK-Abhängigkeiten als Inhalt im MSIX-Paket eingeschlossen. Die Bereitstellung der App erfordert weiterhin die Registrierung des MSIX-Pakets wie jede andere verpackte App.
Wenn Ihre App an einem externen Speicherort verpackt oder entpackt wird, werden die Windows App SDK-Abhängigkeiten neben der .exe
in der Buildausgabe kopiert. Sie können die resultierenden Dateien xcopy-verteilen oder in ein benutzerdefiniertes Installationsprogramm einschließen.
Abhängigkeiten von zusätzlichen MSIX-Paketen
Eine kleine Anzahl von APIs im Windows App SDK basiert auf zusätzlichen MSIX-Paketen, die wichtige Betriebssystemfunktionen darstellen.
- Beispielsweise (ab dem Windows App SDK 1.1) haben Pushbenachrichtigungs-APIs (PushNotificationManager) und App-Benachrichtigungs-APIs (AppNotificationManager) eine Abhängigkeit vom Singleton-Paket (siehe Bereitstellungsarchitektur für das Windows App SDK).
Das bedeutet, dass Sie, wenn Sie diese APIs in einer eigenständigen App verwenden möchten, die folgenden Optionen haben:
- Sie können Ihre Funktionalität optional machen und sie nur dann aufhellen , wenn und wann möglich. Durch Aufrufen der IsSupported-Methode (PushNotificationManager.IsSupported und AppNotificationManager.IsSupported) können Sie zur Laufzeit dynamisch überprüfen, ob die APIs für die aufrufende App auf dem System verfügbar sind, auf dem sie ausgeführt wird.
- Dies ermöglicht eine sichere, bedingte und optionale Verwendung der APIs, ohne die Einfachheit Ihrer eigenständigen Bereitstellung zu beeinträchtigen.
- Nur wenn die Betriebssystemdienste außerhalb Ihrer App-Bereitstellung installiert sind, wird die entsprechende Funktionalität von der App aktiviert. Es gibt jedoch einige Fälle, in denen die APIs auch ohne das Vorhandensein des Singleton-Pakets funktionieren; daher ist es oft eine gute Idee, IsSupported aufzurufen, um dies zu überprüfen.
- Stellen Sie die erforderlichen MSIX-Pakete als Teil der App-Installation bereit.
- Auf diese Weise können Sie in allen Szenarien von der API abhängig sein. Die Anforderung der MSIX-Paketbereitstellung von Abhängigkeiten als Teil Ihrer App-Bereitstellung kann jedoch die Einfachheit der eigenständigen Bereitstellung beeinträchtigen.
- Verwenden Sie die API nicht.
- Erwägen Sie alternative APIs, die ähnliche Funktionen ohne zusätzliche Bereitstellungsanforderungen bereitstellen.
Deaktivieren oder Aktivieren der automatischen UndockedRegFreeWinRT-Unterstützung
Die Projekteigenschaft WindowsAppSdkUndockedRegFreeWinRTInitialize wurde in Version 1.2 des Windows App SDK (stabiler Kanal) eingeführt. Wenn diese Eigenschaft auf true festgelegt ist, stellt dies sicher, dass die Implementierung von andock-freiem Windows Runtime (UndockedRegFreeWinRT) automatisch beim Start der App aktiviert wird. Die Unterstützung wird von nicht verpackten, unabhängigen Apps benötigt.
WindowsAppSdkUndockedRegFreeWinRTInitialize Standardwert ist true, wenn WindowsAppSDKSelfContained-true und WindowsPack ist ist None und (ab Version 1.2 des Windows App SDK) OutputType- Projekteigenschaft auf Exe- oder WinExe- festgelegt ist (d. h. das Projekt erzeugt eine ausführbare Datei). Diese letzte Bedingung besteht darin, das Hinzufügen der automatischen UndockedRegFreeWinRT-Unterstützung zu Klassenbibliothek-DLLs und anderen nicht ausführbaren Dateien standardmäßig zu verhindern. Wenn Sie die automatische UndockedRegFreeWinRT-Unterstützung in einem nicht-executable benötigen (z. B. eine Test-DLL, die von einem ausführbaren Hostprozess geladen wird, der UndockedRegFreeWinRT nicht initialisiert), können Sie sie explizit in Ihrem Projekt mit <WindowsAppSdkUndockedRegFreeWinRTInitialize>true</WindowsAppSdkUndockedRegFreeWinRTInitialize>
aktivieren.
Zugehörige Themen
Windows developer