Share via


Esercitazione: usare l'API del programma di avvio automatico in un'app in pacchetto con percorso esterno o non in pacchetto che usa Windows App SDK

Questo articolo illustra come configurare un'app non installata usando MSIX (ovvero viene inclusa in un pacchetto con percorso esterno o esclusa dal pacchetto) per usare l'API del programma di avvio automatico in modo che carichi in modo esplicito il runtime di Windows App SDK e chiama le API di Windows App SDK. Le app non installate tramite MSIX includono app nel pacchetto con percorso esterno e app senza pacchetto.

Importante

A partire da Windows App SDK 1.0, l'approccio predefinito per il caricamento di Windows App SDK da un pacchetto con percorso esterno o un'app non in pacchetto consiste nell'usare l'inizializzazione automatica tramite la proprietà del progetto <WindowsPackageType> (nonché apportare altre modifiche alla configurazione). Per i passaggi necessari per l'inizializzazione automatica nel contesto del progetto WinUI 3, vedi Crea il primo progetto WinUI 3. In alternativa, se si ha un progetto esistente che non è WinUI 3, vedere Utilizza Windows App SDK in un progetto esistente.

Se si hanno esigenze avanzate (come la gestione degli errori personalizzata o il caricamento di una versione specifica di Windows App SDK), è possibile invece chiamare l'API del programma di avvio automatico in modo esplicito. E questo è l'approccio illustrato in questo argomento. Dunque, per altre informazioni vedere Usare il runtime di Windows App SDK per le app incluse nel pacchetto con percorso esterno o escluse dal pacchetto.

Questo argomento illustra come chiamare in modo esplicito l'API del programma di avvio automatico da un progetto di app console di base; ma i passaggi si applicano a qualsiasi app desktop non inclusi nel pacchetto che usa Windows App SDK.

Prima di completare questo tutorial, è consigliabile esaminare Architettura di runtime per altre informazioni sulla dipendenza del pacchetto Framework usata dall'app quando utilizza Windows App SDK e i componenti aggiuntivi necessari per lavorare in un pacchetto con un percorso esterno o un'app non inclusa nel pacchetto.

Prerequisiti

  1. Installare gli strumenti per Windows App SDK.
  2. Assicurarsi che tutte le dipendenze per le app incluse nel pacchetto con percorso esterno e non incluse nel pacchetto siano installate (vedi Guida alla distribuzione di Windows App SDK per le app dipendenti dal framework incluse nel pacchetto con percorso esterno o non incluse nel pacchetto). Un modo semplice per eseguire il programma di installazione del runtime di Windows App SDK.

Istruzioni

È possibile seguire questo tutorial usando un progetto C# o C++.

Nota

Le dipendenze dinamiche e le API del programma di avvio automatico hanno esito negativo quando vengono chiamate da un processo con privilegi elevati. Di conseguenza, Visual Studio non deve essere avviato con privilegi elevati. Per altri dettagli, vedere Dipendenze dinamiche non supporta l'elevazione 567 .

Seguire queste istruzioni per configurare un progetto WinUI 3 C#, sia incluso nel pacchetto con percorso esterno, sia non incluso nel pacchetto.

  1. In Visual Studio, creare un nuovo progetto per C# App Console. Denominare il progetto DynamicDependenciesTest. Dopo aver creato il progetto, si dovrebbe avere un'applicazione per console in C# con messaggio "Hello, World!"

  2. In seguito, configurare il progetto.

    1. Fare clic con il pulsante destro del mouse sul progetto in Esplora soluzioni, quindi scegliere Modifica File di progetto.
    2. Sostituire il valore dell'elemento TargetFramework con un Moniker di destinazione Framework. Ad esempio, se l'app è destinata a Windows 10 versione 2004, utilizzare quanto segue.
    <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework>
    
    1. Salva e chiudi il file di progetto.
  3. Modificare la piattaforma per la soluzione in x64. Il valore predefinito in un progetto .NET è AnyCPU, ma WinUI 3 non supporta tale piattaforma.

    1. Selezionare Genera>Gestione configurazione.
    2. Selezionare l'elenco a discesa in Piattaforma soluzione attiva e fare clic su Nuovo per aprire la finestra di dialogo Nuova piattaforma soluzione.
    3. Nella casella a discesa, alla voce Digita o seleziona la nuova piattaforma, selezionare x64.
    4. Scegliere OK per chiudere la finestra di dialogo Piattaforma di nuova soluzione.
    5. Nella finestra Gestione configurazione, Fare clic su Chiudi.
  4. Installare il pacchetto NuGet SDK per Windows App SDK nel progetto.

    1. In Esplora soluzioni fare clic con il pulsante destro del mouse su Dipendenze e scegliere Gestisci pacchetti NuGet.
    2. Nella finestra Gestione pacchetti NuGet selezionare la scheda Sfoglia e installare il pacchetto Microsoft.WindowsAppSDK.
  5. A questo punto è possibile usare l'API del programma di avvio automatico (vedere Utilizzo del runtime di Windows App SDK per le app incluse nel pacchetto con percorso esterno o non incluse nel pacchetto) per acquisire dinamicamente una dipendenza dal pacchetto del framework Windows App SDK. In questo modo è possibile usare le API di Windows App SDK nell'app.

    Aprire il file di codice Program.cs e sostituire il codice predefinito con il codice seguente per richiamare il metodo Bootstrap.Initialize per inizializzare il programma di avvio automatico. Questo codice definisce la versione di Windows App SDK. L'app dipende dall'inizializzazione del programma di avvio automatico.

    Importante

    Sarà necessario modificare il codice seguente in base alla configurazione specifica. Vedere le descrizioni dei parametri del metodo Bootstrap.Initialize in modo da poter specificare una delle versioni installate di Windows App SDK.

    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();
            }
        }
    }
    

    Alla sua radice, l'API del programma di avvio automatico è un'API C/C++ nativa che consente di usare le API di Windows App SDK nell'app. Tuttavia, in un'app .NET che usa Windows App SDK 1.0 o versione successiva, è possibile usare il wrapper .NET per l'API del programma di avvio automatico. Questo wrapper offre un modo più semplice per chiamare l'API del programma di avvio automatico in un'app .NET rispetto alla chiamata diretta delle funzioni C/C++ native. L'esempio di codice precedente chiama i metodi statici Initialize e Shutdown della classe Bootstrap nel wrapper .NET per l'API del programma di avvio automatico.

  6. Per dimostrare che i componenti di runtime Windows App SDK sono stati caricati correttamente, aggiungere un codice che usa la classe ResourceManager in Windows App SDK per caricare una risorsa di stringa.

    1. Aggiungere un nuovo file di risorse (con estensione .resw) al progetto (lasciare il nome predefinito).

    2. Con il file di risorse aperto nell'editor, creare una nuova risorsa di stringa con le proprietà seguenti.

      • Nome: Messaggio
      • Valore: Hello, resources!
    3. Salvare il file di risorse.

    4. Aprire il file del codice Program.cs e sostituire l'intero contenuto con il codice seguente Console.WriteLine("Hello, World!");.

    // 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. Fare clic su Avvia senza eseguire debug (o Avvia debug) per compilare ed eseguire l'app. Verrà visualizzata correttamente la stringa Hello, resources! .

Se il progetto è WPF

Per un'app Windows Presentation Foundation (WPF), vedere Utilizzo di Windows App SDK in un'app WPF.