Creare un pacchetto dell'app con MSIX a progetto singolo

MSIX a progetto singolo è una funzionalità che consente di compilare un'app desktop WinUI 3 incluso nel pacchetto senza la necessità di un progetto di creazione di pacchetti separato. Un'app WinUI 3 è quella che usa il framework Libreria interfaccia utente Windows (WinUI) 3 per l'interfaccia utente e utilizza Windows App SDK Per creare un pacchetto di un'app desktop che non è un'app WinUI 3, vedere Configurazione dell'applicazione desktop per la creazione di pacchetti MSIX in Visual Studio.

La funzionalità MSIX a progetto singolo è disponibile come estensione di Visual Studio che è possibile usare per questi scenari:

  • Creare una nuova app desktop WinUI 3 usando il modello di progetto App vuota, inclusa nel pacchetto (WinUI 3 in Desktop) di Visual Studio fornito con Windows App SDK. Questo progetto è configurato per compilare l'app in un pacchetto MSIX senza bisogno di un progetto di creazione di pacchetti separato.
  • Modificare un'app desktop WinUI 3 esistente che usa un progetto di creazione pacchetti separato. La modifica comporta la rimozione del progetto di creazione pacchetti separato, come illustrato nella figura seguente.

Comparing packaging project to single project

Panoramica

Questa sezione presenta alcuni dettagli importanti sulla funzionalità MSIX a progetto singolo.

Vantaggi

Prima di introdurre la funzionalità MSIX a progetto singolo, se si vuole compilare un'app desktop WinUI 3 inclusa nel pacchetto, sono necessari due progetti nella soluzione, ovvero il progetto dell'app, oltre a un Progetto di creazione pacchetti per applicazioni Windows (vedere Configurazione dell'applicazione desktop per la creazione di pacchetti MSIX in Visual Studio). La funzionalità MSIX a progetto singolo consente di sviluppare e compilare l'app usando solo un progetto per l'app. Ciò offre una struttura di progetto più pulita e un'esperienza di sviluppo più semplice. Ad esempio, non è più necessario selezionare il progetto di creazione pacchetti separato come progetto di avvio.

Tipi di progetti non supportati

La funzionalità MSIX a progetto singolo supporta modelli WinUI 3 in Visual Studio (C# e C++) per Windows App SDK.

Limiti

MSIX a progetto singolo supporta solo un singolo eseguibile nel pacchetto MSIX generato. Se è necessario combinare più file eseguibili in un singolo pacchetto MSIX, è necessario continuare a usare un progetto di creazione pacchetti di applicazioni Windows nella soluzione.

Installare gli strumenti per la creazione di pacchetti MSIX a progetto singolo

Gli strumenti per la creazione di pacchetti MSIX a progetto singolo includono modelli di progetto di Visual Studio che è possibile usare per creare nuove app desktop WinUI 3 incluse nel pacchetto. Questi strumenti sono inclusi nell'estensione Windows App SDK per Visual Studio. Per istruzioni di installazione per Windows App SDK, vedere Installazione degli strumenti per Windows App SDK.

Windows App SDK 0.8 versione 0.8 e C# di 1.0 Preview 3: Gli strumenti per la creazione di pacchetti MSIX a progetto singolo non sono inclusi nell'estensione Windows App SDK per Visual Studio per Windows App SDK versione 0.8 o per i progetti C# fino alla Preview 3 di Windows App SDK 1.0 inclusa. Pertanto, se si usano queste versioni, potrebbe essere necessario installare in modo esplicito gli strumenti di creazione pacchetti MSIX a progetto singolo. Vedere l'elenco di seguito:

È quindi possibile, in Visual Studio, verificare che l'estensione sia installata. Fare clic su Estensioni>Gestisci estensioni>Installate>Tutte, e confermare che Strumenti di creazione pacchetti MSIX a progetto singolo sia elencato.

Crea un nuovo progetto

Se si utilizza Windows App SDK 1.0 Preview 2 o versione successiva, è possibile poi creare una nuova app basata su WinUI 3 che include il supporto MSIX a progetto singolo semplicemente usando il modello App vuota, Inclusa nel pacchetto (WinUI 3 in Desktop). Per altre informazioni, vedere Crea il tuo primo progetto WinUI 3

Modificare un progetto esistente

Seguire la procedura descritta in questa sezione per modificare un'app basata su WinUI 3 esistente che usa un progetto di creazione di pacchetti separato. I passaggi includono lo spostamento del manifesto del pacchetto (e altro supporto necessario per compilare un pacchetto MSIX) nel progetto dell'applicazione e quindi la rimozione del progetto di creazione del pacchetto separato.

Passaggio 1: creare o aprire un progetto di creazione pacchetti esistente

Se si ha già una soluzione per un'app desktop WinUI 3 (vedere Modelli WinUI 3 in Visual Studio) che include un Progetto di creazione pacchetti di applicazioni Windows (vedere Configurare l'applicazione desktop per la creazione di pacchetti MSIX in Visual Studio), quindi, aprire subito la soluzione in Visual Studio.

In caso contrario, creare una nuova app desktop WinUI 3 in Visual Studio usando il modello App vuota, Inclusa nel pacchetto con progetto di creazione pacchetti di applicazioni Windows (WinUI 3 in Desktop). La soluzione avrà un aspetto simile a quello dello screenshot successivo.

A solution using the packaging project

Passaggio 2: modificare le impostazioni del progetto dell'applicazione

Modificare quindi alcune impostazioni di configurazione per usare la funzionalità MSIX a progetto singolo. Sono disponibili istruzioni diverse a seconda del tipo di progetto e della versione di Visual Studio.

  1. In Esplora soluzioni, fare doppio clic sul nodo del progetto XML per aprire il file di progetto .csproj nell'editor XML. Aggiungere il codice XML seguente all'elemento principale <PropertyGroup>.

    <EnableMsixTooling>true</EnableMsixTooling>
    <PublishProfile>Properties\PublishProfiles\win10-$(Platform).pubxml</PublishProfile>
    

    Al termine, l'elemento <PropertyGroup> deve essere simile a quello riportato di seguito.

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <OutputType>WinExe</OutputType>
        <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework>
        ...
        <UseWinUI>true</UseWinUI>
        <EnableMsixTooling>true</EnableMsixTooling>
        <PublishProfile>Properties\PublishProfiles\win10-$(Platform).pubxml</PublishProfile>
      </PropertyGroup>
    
  2. Salva le modifiche e chiudi il file .csproj.

  3. Eseguire una delle procedure seguenti, a seconda della versione di Visual Studio.

    Per Visual Studio 2022 o versione successiva.

    1. In Esplora soluzioni fare clic con il pulsante destro del mouse sulla cartella Proprietà nel nodo del progetto per l'applicazione e scegliere Aggiungi>Nuovo elemento....

    2. Selezionare File di testo, assegnare al nuovo file il nome launchSettings.json e fare clic su Aggiungi. Assicurarsi che il nuovo file si trovi nella cartella Proprietà del progetto dell'applicazione.

    3. Copiare le seguenti impostazioni nel nuovo file. È possibile modificare i valori in base alle esigenze per lo scenario. Il valore MyApp può essere qualsiasi stringa. Non è necessario che corrisponda al nome dell'applicazione.

      {
          "profiles": {
              "MyApp": {
                  "commandName": "MsixPackage",
                  "commandLineArgs": "", /* Command line arguments to pass to the app. */
                  "alwaysReinstallApp": false, /* Uninstall and then reinstall the app. All information about the app state is deleted. */
                  "remoteDebugEnabled": false, /* Indicates that the debugger should attach to a process on a remote machine. */
                  "allowLocalNetworkLoopbackProperty": true, /* Allow the app to make network calls to the device it is installed on. */
                  "authenticationMode": "Windows", /* The authentication scheme to use when connecting to the remote machine. */
                  "doNotLaunchApp": false, /* Do not launch the app, but debug my code when it starts. */
                  "remoteDebugMachine": "", /* The name of the remote machine. */
                  "nativeDebugging": false /* Enable debugging for managed and native code together, also known as mixed-mode debugging. */
              }
          }
      }
      
    4. Salvare e chiudere il file launchSettings.json.

    Per Visual Studio 2019:

    1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo del progetto per la propria applicazione e selezionare Proprietà.

    2. Selezionare la scheda Debug e impostare la proprietà Launch su MsixPackage. Potrebbe essere necessario selezionarlo due volte se viene ripristinato al primo tentativo.

      Enabling MsixProject option

    3. Salvare le modifiche.

Passaggio 3: spostare i file nel progetto dell'applicazione

Poi, spostare diversi file importanti nel progetto dell'applicazione. Sono disponibili istruzioni diverse a seconda del tipo di progetto.

  1. In Esplora file spostare il file Package.appxmanifest e la cartella Images dal progetto di creazione pacchetti al progetto dell'applicazione. Posizionare il file e la cartella nel livello superiore della gerarchia di cartelle del progetto dell'applicazione.
  2. Da Visual Studio, in Esplora soluzioni, selezionare tutte le immagini all'interno della cartella Immagini. Dalla finestra Proprietà impostare Compila operazione su Contenuto.
  3. Rimuovere il progetto di creazione pacchetto dalla soluzione.

Illustration of moving files to main app

Passaggio 4: abilitare la distribuzione in Configuration Manager

  1. Selezionare Genera>Gestione configurazione.
  2. In Configuration Manager, fare clic su Distribuisci per ogni combinazione di configurazione e piattaforma (ad esempio, Debug e x86, Debug e arm64, Rilascio e x64, e altro ancora).

    Nota

    Assicurarsi di usare gli elenchi a discesa Configurazione di soluzione attiva e Piattaforma di soluzione attiva nella parte alta anziché Configurazione e Piattaforma nella stessa riga della casella di controllo Distribuisci.

Enabling Deploy in Configuration Manager

Passaggio 5: distribuire l'app

Compilare e distribuire il progetto di applicazione Visual Studio compilerà l'applicazione in un pacchetto MSIX, installerà il pacchetto e quindi eseguirà l'applicazione.

Passaggio 6: creare un pacchetto dell'app per la pubblicazione

Usare il comando Pacchetto & e pubblicazione in Visual Studio per creare un pacchetto dell'applicazione in modo da pubblicarlo in Microsoft Store.

Automatizzare la compilazione e la creazione di pacchetti dell'app MSIX a progetto singolo

È possibile usare msbuild per compilare e creare un pacchetto dell'app MSIX a progetto singolo, consentendo così di automatizzare il flusso di lavoro. La tecnica per una soluzione a progetto singolo e la riga di comando è leggermente diversa da quella che si sta già facendo se si dispone di una soluzione a due progetti, una con un Progetto di creazione pacchetti di applicazioni Windows (vedere Configurazione dell'applicazione desktop per la creazione di pacchetti MSIX in Visual Studio).

L'opzione di comando di compilazione importante per una soluzione a progetto singolo è /p:GenerateAppxPackageOnBuild=true. Senza questa opzione, il progetto verrà compilato, ma non si otterrà un pacchetto MSIX. Includere questa opzione e quella che comporterà la generazione del pacchetto MSIX.

È disponibile un esempio completo sotto forma di azione GitHub che compila una soluzione a progetto singolo WinUI 3.

Nota

MSIX a progetto singolo non supporta attualmente la produzione di bundle MSIX (vedere Creazione di un bundle di pacchetti MSIX). Produce solo un singolo MSIX. È tuttavia possibile aggregare .msix i file in un bundle MSIX usando Bundler MSIX Azione GitHub.

Come funziona un'applicazione desktop inclusa nel pacchetto su Windows

Per un approfondimento su ciò che accade ai file e alle voci del registro quando si crea un pacchetto di applicazioni Windows per l'applicazione desktop, vedere Informazioni sull'esecuzione delle app desktop pacchettizzate in Windows.

Inviare commenti

Per inviare commenti e suggerimenti, segnalare problemi o porre domande sulla funzionalità MSIX a progetto singolo, pubblicare una discussione o un problema nel repository GitHub SDK per app di Windows.