Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een Windows App SDK-project is standaard frameworkafhankelijk. Als u wilt overschakelen naar zelfstandige implementatie, volgt u de onderstaande stappen (de termen frameworkafhankelijke en zelfstandige worden beschreven in overzicht van de implementatie van Windows App SDK).
- Klik in Visual Studio met de rechtermuisknop op het app-projectknooppunt en klik op Projectbestand bewerken om het app-projectbestand te openen voor bewerken. Klik voor een C++-project eerst op Projectontladen.
- Voeg in het projectbestand van de app in de hoofd-
PropertyGroup<WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained>toe, zoals wordt weergegeven in de onderstaande schermopname.
- Sla het projectbestand op en sluit het.
- Klik op Herlaad project.
- Als u een Windows Application Packaging-project gebruikt (in plaats van de MSIX voor één project die u krijgt met WinUI Blank App (Verpakt)), moet u ook alle bovenstaande wijzigingen in het projectbestand voor het pakketproject aanbrengen.
Notitie
Bibliotheekprojecten mogen niet worden gewijzigd. Zelfstandige implementatie mag alleen worden geconfigureerd in app-projecten (en, indien van toepassing, in een Windows Application Packaging Project).
Zie voor voorbeeld-apps de zelfstandige implementatievoorbeelden voor Windows App SDK .
Nadat u de eigenschap WindowsAppSDKSelfContained hebt ingesteld op true in uw projectbestand, wordt de inhoud van het Windows App SDK Framework-pakket geëxtraheerd naar uw build-uitvoer en geïmplementeerd als onderdeel van uw toepassing.
Notitie
.NET-apps moeten worden gepubliceerd als zelfstandige om volledig zelfstandig te zijn. Zie dit voorbeeld om .NET zelfstandig te configureren met publicatieprofielen.
Houd er rekening mee dat dotnet publish beheerde assembly's bundelt, maar kan geen exe voor WinUI 3-apps produceren. De systeemeigen Windows App SDK runtimeafhankelijkheden moeten als afzonderlijke bestanden blijven. Zie EXE met één bestand voor meer informatie.
Notitie
C++-apps moeten ook gebruikmaken van de hybride CRT- om volledig zelfstandig te zijn. Het importeren van HybridCRT.props uit Directory.Build.props is de aanbevolen manier om deze te configureren voor alle projecten in een oplossing (zie een voorbeeld in Directory.Build.props). Een verpakte app moet ook <UseCrtSDKReferenceStaticWarning>false</UseCrtSDKReferenceStaticWarning> instellen in het projectbestand. Zie de zelfstandige implementatie voorbeeldtoepassing voor hoe de hybride CRT te gebruiken.
Wanneer uw app verpakt is (voor meer informatie, zie Implementatieoverzicht), worden de afhankelijkheden van de Windows App SDK opgenomen als inhoud in het MSIX-pakket. Voor het implementeren van de app moet het MSIX-pakket nog steeds worden geregistreerd, net als elke andere verpakte app.
Als uw app is verpakt met een externe locatie of uitgepakt, worden de Afhankelijkheden van de Windows App SDK naast de .exe in de build-uitvoer gekopieerd. U kunt de resulterende bestanden "xcopy-deployen" of opnemen in een aangepaste installer.
Afhankelijkheden van aanvullende MSIX-pakketten
Een klein aantal API's in de Windows App SDK is afhankelijk van aanvullende MSIX-pakketten die essentiële besturingssysteemfunctionaliteit (OS) vertegenwoordigen.
- Bijvoorbeeld: API's voor pushmeldingen (PushNotificationManager) en app-meldingen-API's (AppNotificationManager) hebben een afhankelijkheid van het pakket Singleton (zie Deployment-architectuur voor de Windows App SDK).
Dit betekent dat als u deze API's wilt gebruiken in een zelfstandige app, u de volgende opties hebt:
- U kunt uw functionaliteit optioneel maken en deze alleen oplichten indien mogelijk. Als u de methode van de API's aanroept (PushNotificationManager.IsSupported en AppNotificationManager.IsSupported) kunt u tijdens runtime dynamisch controleren of de API's beschikbaar zijn voor de aanroepende applicatie op het systeem waarop deze wordt uitgevoerd.
- Dit maakt veilig, voorwaardelijk, optioneel gebruik van de API's mogelijk zonder de eenvoud van uw zelfstandige implementatie in gevaar te brengen.
- Alleen als de besturingssysteemservices buiten uw app-implementatie zijn geïnstalleerd, krijgt uw app de juiste functionaliteit. Maar in feite zijn er enkele gevallen waarin de API's werken, zelfs zonder dat het Singleton-pakket aanwezig is; dus het aanroepen van IsSupported om te controleren, is vaak een goed idee.
- Implementeer de vereiste MSIX-pakketten als onderdeel van de installatie van uw app.
- Hierdoor kunt u in alle scenario's afhankelijk zijn van de API. Maar het vereisen van msiX-pakketimplementatie van afhankelijkheden als onderdeel van uw app-implementatie kan de eenvoud van zelfstandige implementatie in gevaar komen.
- Gebruik de API niet.
- Overweeg alternatieve API's die vergelijkbare functionaliteit bieden zonder aanvullende implementatievereisten.
De automatische ondersteuning voor UndockedRegFreeWinRT uitschakelen (of inschakelen)
De projecteigenschap WindowsAppSdkUndockedRegFreeWinRTInitialize bepaalt of de implementatie van de Windows App SDK van ontkoppelde registratievrije Windows Runtime (UndockedRegFreeWinRT) automatisch wordt ingeschakeld bij het opstarten van de app. Deze ondersteuning is nodig voor uitgepakte zelfstandige apps.
WindowsAppSdkUndockedRegFreeWinRTInitialize is standaard true als WindowsAppSDKSelfContainedtrue is en WindowsPackageTypeNone is en de projecteigenschap OutputType is ingesteld op Exe of WinExe (dat wil zeggen dat het project een uitvoerbaar bestand produceert). Deze laatste voorwaarde voorkomt dat automatische UndockedRegFreeWinRT-ondersteuning wordt toegevoegd aan klassebibliotheek-DLL's en andere niet-uitvoerbare bestanden standaard. Als u automatische UndockedRegFreeWinRT-ondersteuning nodig hebt in een niet-uitvoerbaar bestand (bijvoorbeeld een test-DLL die is geladen door een uitvoerbaar hostproces dat undockedRegFreeWinRT niet initialiseert), kunt u deze expliciet inschakelen in uw project met <WindowsAppSdkUndockedRegFreeWinRTInitialize>true</WindowsAppSdkUndockedRegFreeWinRTInitialize>.
Verwante onderwerpen
Windows developer