Dela via


Självstudie: Använd bootstrapper-API:et i en app som paketeras med externt lagringsutrymme eller som är opaketerad som använder Windows App SDK.

Den här artikeln visar hur du konfigurerar en app som inte är installerad med hjälp av MSIX (dvs. den är paketerad med extern plats eller uppackad) för att använda bootstrapper-API:et så att den uttryckligen läser in Windows App SDK-körningen och anropar Windows App SDK-API:er. Appar som inte installeras via MSIX innehåller appar som paketeras med extern plats och uppackade appar.

Viktigt!

Från och med Windows App SDK 1.0 är standardmetoden för att ladda Windows App SDK från ett paket installerat på en extern plats eller en uppackad app att använda automatisk initiering via <WindowsPackageType> projektegenskap (samt göra ytterligare konfigurationsändringar). De steg som ingår i automatisk initiering i samband med WinUI 3-projektet finns i Skapa ditt första WinUI 3-projekt. Om du har ett befintligt projekt som inte är WinUI 3 kan du läsa Använda Windows App SDK i ett befintligt projekt.

Om du har avancerade behov (till exempel anpassad felhantering eller för att läsa in en specifik version av Windows App SDK) kan du i stället anropa bootstrapper-API:et explicit. Och det är den metod som det här ämnet visar. Se även för mer information om hur du använder Windows App SDK-körningen för appar som paketeras med extern plats eller inte paketeras.

Det här avsnittet visar hur du uttryckligen anropar bootstrapper-API:et från ett grundläggande konsolappprojekt. men stegen gäller för alla uppackade skrivbordsappar som använder Windows App SDK.

Innan du slutför den här självstudien rekommenderar vi att du granskar Körningsarkitektur för att lära dig mer om Framework paketberoende som din app har när den använder Windows App SDK, samt de ytterligare komponenter som krävs för att fungera i en app som är paketerad med extern placering eller en icke-paketerad app.

Förutsättningar

  1. Installera verktyg för Windows App SDK.
  2. Se till att alla beroenden för appar paketerade med externa platser och uppackade appar är installerade (se distributionsguiden för Windows App SDK för ramverksberoende appar med externa platser eller som inte är paketerade). Ett enkelt sätt att göra det är att köra runtime-installationsprogrammet för Windows App SDK.

Instruktion

Du kan följa den här självstudien med hjälp av ett C#- eller C++-projekt.

Anmärkning

Dynamiska beroenden och bootstrapper-API:er misslyckas när de anropas av en upphöjd process. Därför bör Visual Studio inte startas upphöjt. Se dynamiska beroenden stöder inte administratörsbehörighet, #567 för mer information.

Följ de här anvisningarna för att konfigurera ett C# WinUI 3-projekt som antingen paketeras på en extern plats eller är utan paketering.

  1. I Visual Studio skapar du ett nytt C# Console App-projekt. Ge projektet namnet DynamicDependenciesTest. När du har skapat projektet bör du ha ett "Hello, World!" C#-konsolapp.

  2. Konfigurera sedan projektet.

    1. I Solution Explorerhögerklickar du på projektet och väljer Redigera projektfil.
    2. Ersätt värdet för elementet TargetFramework med en målramverksidentifierare. Använd till exempel följande om din app riktar sig mot Windows 10, version 2004.
    <TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>
    
    1. Spara och stäng projektfilen.
  3. Ändra plattformen för din lösning till x64. Standardvärdet i ett .NET-projekt är AnyCPU, men WinUI 3 stöder inte den plattformen.

    1. Välj Build>Configuration Manager.
    2. Välj listrutan under Aktiv lösningsplattform och klicka på Ny för att öppna dialogrutan Ny lösningsplattform.
    3. I listrutan under Typ eller välj den nya plattformenväljer du x64.
    4. Klicka på OK för att stänga dialogrutan Ny lösningsplattform.
    5. I Configuration Managerklickar du på Stäng.
  4. Installera Windows App SDK NuGet-paketet i projektet.

    1. I Solution Explorerhögerklickar du på noden Beroenden och väljer Hantera Nuget-paket.
    2. I fönstret NuGet Package Manager väljer du fliken Bläddra och installerar Microsoft.WindowsAppSDK--paketet.
  5. Nu är du redo att använda bootstrapper-API:t (se Använda Windows App SDK-körningen för appar som paketeras med extern plats eller packas upp) för att dynamiskt skapa ett beroende till Windows App SDK-ramverkspaket. På så sätt kan du använda Windows App SDK-API:er i din app.

    Öppna kodfilen Program.cs och ersätt standardkoden med följande kod för att anropa metoden Bootstrap.Initialize för att initiera bootstrappern. Den här koden definierar vilken version av Windows App SDK som appen är beroende av när bootstrapper initieras.

    Viktigt!

    Du måste redigera koden nedan för att passa din specifika konfiguration. Se beskrivningarna av parametrarna för metoden Bootstrap.Initialize så att du kan ange en av versionerna av Windows App SDK som du har installerat.

    using System;
    using Microsoft.Windows.ApplicationModel.DynamicDependency;
    
    namespace DynamicDependenciesTest
    {
        class Program
        {
            static void Main(string[] args)
            {
                Bootstrap.Initialize(0x00010002);
                Console.WriteLine("Hello, World!");
    
                // Release the DDLM and clean up.
                Bootstrap.Shutdown();
            }
        }
    }
    

    I roten är bootstrapper-API:et ett internt C/C++-API som gör att du kan använda Windows App SDK-API:erna i din app. Men i en .NET-app som använder Windows App SDK 1.0 eller senare kan du använda .NET-omslutning för bootstrapper-API:et. Den här omslutningen är ett enklare sätt att anropa bootstrapper-API:et i en .NET-app än att anropa de interna C/C++-funktionerna direkt. I föregående kodexempel anropas den statiska Initiera och Avstängning metoder för klassen Bootstrap i .NET-omslutningen för bootstrapper-API:et.

  6. För att visa att Windows App SDK-körningskomponenterna lästes in korrekt lägger du till kod som använder ResourceManager-klassen i Windows App SDK för att läsa in en strängresurs.

    1. Lägg till en ny resursfil (.resw) i projektet (lämna standardnamnet).

    2. När resursfilen är öppen i redigeraren skapar du en ny strängresurs med följande egenskaper.

      • Namn: Meddelande
      • Värde: Hej, resurser!
    3. Spara resursfilen.

    4. Öppna Program.cs-kodfilen och ersätt raden Console.WriteLine("Hello, World!"); med följande kod.

    // Create a resource manager using the resource index generated during build.
       var manager = new Microsoft.Windows.ApplicationModel.Resources.ResourceManager("DynamicDependenciesTest.pri");
    
    // Look up a string in the .resw file using its name.
    Console.WriteLine(manager.MainResourceMap.GetValue("Resources/Message").ValueAsString);
    
    1. Klicka på Starta utan att felsöka (eller Starta felsökning) för att skapa och köra appen. Du bör se strängen Hello, resources! visas framgångsrikt.

Om projektet är WPF

För en Windows Presentation Foundation (WPF)-app, se Använd Windows App SDK i en WPF-app.