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 een enkel project die u krijgt met lege app, gepackaged (WinUI 3 op desktop)), breng dan ook alle bovenstaande wijzigingen aan in het projectbestand voor het packagingproject.
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.
dotnet publish wordt nog niet ondersteund met Windows App SDK 1.1.
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 (vanaf de Windows App SDK 1.1) hebben pushmeldingen-API's (PushNotificationManager) en API's voor app-meldingen (AppNotificationManager) een afhankelijkheid van het Singleton-pakket (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 is geïntroduceerd in versie 1.2 van de Windows App SDK (van het stabiele kanaal). Als deze eigenschap is ingesteld op true, zorgt deze ervoor dat de implementatie van de Windows App SDK van niet-gekoppelde registratievrije Windows Runtime (UndockedRegFreeWinRT) automatisch wordt ingeschakeld bij het opstarten van de app. Deze ondersteuning is nodig voor uitgepakte zelfstandige apps.
WindowsAppSdkUndockedRegFreeWinRTInitialize standaard ingesteld op true als WindowsAppSDKSelfContained is waar en WindowsPackageType is Geen en (vanaf versie 1.2 van de Windows App SDK) de projecteigenschap OutputType is ingesteld op Exe- of WinExe- (dat wil zeggen, het project produceert een uitvoerbaar bestand). Deze laatste voorwaarde is om te voorkomen dat automatische UndockedRegFreeWinRT-ondersteuning wordt toegevoegd aan klassebibliotheek-DLL's en andere niet-uitvoerbare bestanden. 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