Pacchetti facoltativi con codice eseguibile

I pacchetti facoltativi con codice eseguibile sono utili per dividere un'app complessa o di grandi dimensioni o per l'aggiunta a un'app già pubblicata. Con Visual Studio 2017 versione 15.7 e.NET Native 2.1, puoi caricare codice eseguibile da pacchetti facoltativi sia C++ che C#.

Prerequisiti

  • Visual Studio 2019 o Visual Studio 2017 (versione 15.7 o successiva)
  • Windows 10, versione 1709 o successiva
  • Windows 10, versione 1709 SDK o successiva

Per ottenere gli strumenti di sviluppo più recenti, vedi Download e strumenti per Windows 10.

Nota

Per inviare un'app che usa pacchetti facoltativi e/o set correlati allo Store, è necessaria l'autorizzazione. I pacchetti facoltativi e i set correlati possono essere usati per le app line-of-business (LOB) o aziendali senza l'autorizzazione del Centro per i partner se non vengono inviate allo Store. Vedi Supporto per sviluppatori Windows per ottenere l'autorizzazione per inviare un'app che usa pacchetti facoltativi e set correlati.

Nota

I pacchetti facoltativi contenenti codice eseguibile devono far parte di un set correlato. Non sarà possibile eseguire codice da un pacchetto facoltativo a meno che non faccia parte di un set correlato.

Pacchetti facoltativi C++ con codice eseguibile

Per caricare il codice da un pacchetto facoltativo C++, vedere il repository OptionalPackageSample in GitHub. OptionalPackageDLL mostra come creare un progetto con codice che può essere eseguito dal pacchetto principale. Il progetto MyMainApp illustra come caricare il codice dal file OptionalPackageDLL.dll.

Pacchetti facoltativi C# con codice eseguibile

Per iniziare a creare un pacchetto di codice facoltativo in C#, seguire questa procedura per configurare la soluzione:

  1. Creare una nuova applicazione UWP con la versione minima impostata su Windows 10 Fall Creators Update SDK (Build 16299) o versione successiva.

  2. Aggiungere un nuovo progetto Pacchetto di codice facoltativo (Windows universale) alla soluzione. Verificare che la versione minima e la versione di destinazione corrispondano a quella dell'app principale.

  3. Se prevedi di inviare le tue app allo Store, fai clic con il pulsante destro del mouse su entrambi i progetti e scegli Store -> Associa app allo Store...

  4. Aprire il Package.appxmanifest file dell'app principale e trovare il Identity Name valore. Prendere nota di questo valore per il passaggio successivo.

  5. Aprire il file del pacchetto dell'app Package.appxmanifest facoltativo e trovare il uap3:MainAppPackageDependency Name valore. Aggiornare il uap3:MainAppPackageDependency Name valore in modo che corrisponda al Identity Name valore del pacchetto principale dell'app del passaggio precedente.

    Di seguito è riportato un esempio dell'oggetto Identity dell'app Package.appxmanifestprincipale.

    <Identity Name="12345.MainAppProject" Publisher="CN=PublisherName" Version="1.0.0.0" />
    

    Il pacchetto dell'app uap3:MainPackageDependency facoltativo deve essere aggiornato in modo che corrisponda a quello dell'app Identityprincipale.

    <uap3:MainPackageDependency Name="12345.MainAppProjectTest" />
    
  6. Aggiungere un Bundle.mapping.txt file all'app principale. Seguire i passaggi descritti in questa sezione Set correlati per creare un set correlato contenente entrambe le app.

  7. Compilare il progetto di pacchetto facoltativo e quindi passare alla cartella Riferimento pacchetto nell'output della compilazione trovata in ..\[PathToOptionalPackageProject]\bin\[architecture]\[configuration]\Reference. Si noti che è possibile scegliere qualsiasi architettura nel percorso della cartella Riferimenti perché il .winmd file (passaggio 8) è indipendente dall'architettura.

  8. Aggiungere un riferimento dal progetto dell'app principale al .winmd file presente in questa cartella. Ogni volta che si modifica l'area di attacco DELL'API nel progetto di pacchetto facoltativo, questo .winmd file deve essere aggiornato. Questo riferimento fornisce al progetto principale dell'app le informazioni necessarie per la compilazione.

  9. Nel progetto principale dell'app passare alle proprietà di compilazione del progetto e selezionare Compila con la catena di strumenti .NET Native. Attualmente, solo il debug in .NET Native è supportato per la creazione di pacchetti di codice facoltativi in C#. Passare alle proprietà di debug del progetto e selezionare Distribuisci pacchetti facoltativi. In questo modo si garantisce che entrambi i pacchetti siano sincronizzati ogni volta che si distribuisce il progetto dell'app principale.

Al termine di questi passaggi, è possibile aggiungere codice al progetto di pacchetto facoltativo come se fosse un progetto di componente WinRT gestito. Per accedere al codice nel progetto principale dell'app, chiamare i metodi pubblici esposti nel progetto di pacchetto facoltativo.