Distribuzione e debug delle app UWP

Questo articolo descrive in dettaglio i passaggi necessari per gestire varie destinazioni di distribuzione e debug.

Microsoft Visual Studio consente di distribuire ed eseguire il debug di app UWP (Universal Windows Platform) su un'ampia gamma di dispositivi Windows 10. Visual Studio gestirà il processo di creazione e registrazione dell'app nel dispositivo di destinazione.

Selezione di una destinazione di distribuzione

Per scegliere una destinazione, passare all'elenco a discesa relativo alle destinazioni di debug accanto al pulsante Avvia debug e scegliere la destinazione in cui si vuole distribuire l'app. Dopo aver selezionato la destinazione, selezionare Avvia debug (F5) per eseguire la distribuzione e il debug in tale destinazione oppure premere CTRL+F5 per eseguire solo la distribuzione nella destinazione.

Debug device target list

  • Simulatore consente di distribuire l'app in un ambiente simulato nel computer di sviluppo corrente. Questa opzione è disponibile solo se il valore Versione minima piattaforma di destinazione dell'app è minore o uguale al sistema operativo nel computer di sviluppo.
  • Computer locale consente di distribuire l'app nel computer di sviluppo corrente. Questa opzione è disponibile solo se il valore Versione minima piattaforma di destinazione dell'app è minore o uguale al sistema operativo nel computer di sviluppo.
  • Computer remoto consente di specificare una destinazione remota per la distribuzione dell'app. Per altre informazioni sulla distribuzione in un computer remoto, vedere Impostazione di un dispositivo remoto.
  • Dispositivo consente di distribuire l'app in un dispositivo connesso USB. Il dispositivo deve essere stato sbloccato dallo sviluppatore e avere lo schermo sbloccato.
  • Verrà avviata una destinazione di tipo Emulatore e l'app verrà distribuita in un emulatore con la configurazione specificata nel nome. Gli emulatori sono disponibili solo in computer abilitati per Hyper-V in cui viene eseguito Windows 8.1 o versione successiva.

Debug delle app distribuite

È anche possibile connettere Visual Studio a qualsiasi processo di un'app UWP in esecuzione selezionando Debug e quindi Connettere a processo. La connessione a un processo in esecuzione non richiede il progetto originale di Visual Studio, ma il caricamento dei simboli del processo sarà di grande aiuto per il debug di un processo di cui non si ha il codice originale.

In più, è possibile connettere ed eseguire il debug di qualsiasi pacchetto dell'app installato selezionando Debug, Altro e quindi Debug pacchetto applicazione installato.

Debug Installed App Package dialog box

Selezionando Non eseguire il codice utente, ma eseguire il debug all'avvio il debugger di Visual Studio si connetterà all'app UWP quando verrà avviata a un'ora personalizzata. Questo è un modo efficace per eseguire il debug dei percorsi di controllo da metodi di avvio diversi, ad esempio l'attivazione di protocolli con parametri personalizzati.

Le app UWP possono essere sviluppate e compilate in Windows 8.1 o versione successiva, ma, per eseguirle, è necessario Windows 10. Se si sta sviluppando un'app UWP su un PC Windows 8.1 PC, è possibile eseguire in remoto il debug di un'app UWP in esecuzione su un altro dispositivo Windows 10, purché sia il computer host che quello di destinazione siano nella stessa LAN. Per farlo, scaricare e installare Remote Tools per Visual Studio in entrambi i computer. La versione installata deve corrispondere alla versione esistente di Visual Studio installata e anche l'architettura che viene selezionata (x86, x64) deve corrispondere a quella dell'app di destinazione.

Layout del pacchetto

Con Visual Studio 2015 Update 3 è stata aggiunta un'opzione che consente agli sviluppatori di specificare il tracciato di layout per le app UWP. Questo determina dove verrà copiato il layout del pacchetto sul disco quando si crea l'app. Per impostazione predefinita, questa proprietà è impostata in modo relativo rispetto alla directory radice del progetto. Se non si modifica questa proprietà, il comportamento rimarrà uguale a quello delle versioni precedenti di Visual Studio.

Questa proprietà può essere modificata nelle proprietà Debug del progetto.

Se si vogliono includere tutti i file di layout nel pacchetto quando si crea un pacchetto per l'app, si deve aggiungere la proprietà del progetto <IncludeLayoutFilesInPackage>true</IncludeLayoutFilesInPackage>.

Per aggiungere questa proprietà:

  1. Fare clic con il pulsante destro del mouse sul progetto e quindi scegliere Scarica progetto.
  2. Fare clic con il pulsante destro del mouse sul progetto e quindi scegliere Modifica [nome progetto].xxproj (xxproj cambia a seconda del linguaggio del progetto).
  3. Aggiungere la proprietà e quindi ricaricare il progetto.

Impostazione di un dispositivo remoto

C# e Microsoft Visual Basic

Per specificare un computer remoto per le app scritte in C# o Microsoft Visual Basic, selezionare Computer remoto nell'elenco a discesa relativo alle destinazioni di debug. Verrà visualizzata la finestra di dialogo Connessioni remote, dove si potrà specificare un indirizzo IP o selezionare un dispositivo rilevato. Per impostazione predefinita è selezionata la modalità di autenticazione Universale. Per determinare la modalità di autenticazione da usare, vedere Modalità di autenticazione.

Remote Connections dialog box

Per tornare a questa finestra di dialogo, è possibile aprire le proprietà del progetto e passare alla scheda Debug. In questa scheda seleziona Trova accanto a Computer remoto.

Debug tab

Per distribuire un'app in un PC remoto anteriore a Creators Update, dovrai anche scaricare e installare Visual Studio Remote Tools nel PC di destinazione. Per istruzioni complete, vedere le istruzioni per PC remoti. Tuttavia, a partire da Creators Update il PC supporta anche la distribuzione remota.

C++ e JavaScript

Per specificare un computer di destinazione remoto per un'app UWP C++ o JavaScript:

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto e quindi scegliere Proprietà.
  2. Passare alle impostazioni Debug e in Debugger da avviare selezionare Computer remoto.
  3. Immettere il valore in Nome computer (o fare clic su Trova per trovarne uno) e quindi impostare la proprietà Tipo di autenticazione.

Debug property pages

Dopo avere specificato il computer, è possibile selezionare Computer remoto nell'elenco a discesa relativo alle destinazioni di debug per passare al computer specificato. È possibile selezionare solo un computer remoto alla volta.

Istruzioni per PC remoti

Nota

Queste istruzioni sono solo necessarie per le versioni precedenti di Windows 10. A partire da Creators Update, un PC può essere gestito come una Xbox. Vale a dire, mediante l'abilitazione dell'individuazione dei dispositivi nel menu Modalità sviluppatore del PC e l'uso dell'autenticazione universale per associare il PIN e connettersi al PC.

Per eseguire la distribuzione in un PC remoto anteriore a Creators Update, nel PC di destinazione deve essere installato Visual Studio Remote Tools. Il PC remoto deve inoltre eseguire una versione di Windows corrispondente o successiva al valore della proprietà Versione minima piattaforma di destinazione delle tue app. Dopo avere installato gli strumenti remoti, occorre avviare il debugger remoto nel PC di destinazione.

A tale scopo, cercare Debugger remoto nel menu Start, aprirlo e se viene visualizzato un messaggio di richiesta autorizzare il debugger a configurare le impostazioni del firewall. Per impostazione predefinita, il debugger viene avviato usando l'autenticazione di Windows. A tale scopo, saranno necessarie le credenziali utente se l'utente che ha effettuato l'accesso non è lo stesso su entrambi i PC.

Per impostare Nessuna autenticazione, in Debugger remoto passare a Strumenti ->Opzioni e quindi impostare Nessuna autenticazione. Dopo aver configurato il debugger remoto, occorre anche verificare di avere impostato il dispositivo host su Modalità sviluppatore. Si potrà quindi eseguire la distribuzione dal computer di sviluppo.

Per altre informazioni, vedi la pagina Area download Visual studio .

Passaggio di argomenti di debug della riga di comando

In Visual Studio 2019 puoi passare argomenti di debug della riga di comando quando inizi il debug di applicazioni UWP. Puoi accedere agli argomenti di debug della riga di comando dal parametro args nel metodo OnLaunched della classe Application. Per specificare gli argomenti di debug della riga di comando, apri le proprietà del progetto e passa alla scheda Debug.

Nota

Questa è disponibile in Visual Studio 2017 (versione 15.1) per C#, VB e C++. JavaScript è disponibile nelle versioni successive. Gli argomenti di debug della riga di comando sono disponibili per tutti i tipi di distribuzione, tranne il Simulatore.

Per i progetti UWP C# e VB, vedrai il campo Argomenti della riga di comando in Opzioni di avvio.

Command line arguments

Per i progetti UWP C++ e JS, vedrai il campo Argomenti della riga di comando in Proprietà debug.

Screenshot of the App 4 Property Pages with Configuration Properties > Debugging option selected showing Command Line Arguments property isted in the table.

Dopo aver specificato gli argomenti della riga di comando, puoi accedere al valore dell'argomento nel metodo OnLaunched dell'app. L'oggetto LaunchActivatedEventArgsargs avrà una proprietà Arguments con il valore impostato sul testo nel campo Argomenti della riga di comando.

Screenshot of command line arguments for C++ and JS.

Modalità di autenticazione

Esistono tre modalità di autenticazione per la distribuzione in computer remoti:

  • Universale (protocollo non crittografato): usare questa modalità di autenticazione ogni volta che si esegue una distribuzione in un dispositivo remoto. Attualmente, si tratta di dispositivi IoT, dispositivi Xbox e dispositivi HoloLens, nonché PC con Windows versione 1703 (Creators Update) o versione successiva. La modalità universale (protocollo non crittografato) dovrebbe essere usata solo per reti attendibili. La connessione di debug è vulnerabile e utenti malintenzionati potrebbero riuscire a intercettare e modificare i dati passati tra il computer di sviluppo e quello remoto.
  • Windows: questa modalità di autenticazione deve essere usata solo per un PC remoto (desktop o laptop) in cui è in esecuzione Visual Studio Remote Tools. Usare questa modalità di autenticazione quando si ha accesso alle credenziali dell'utente connesso al computer di destinazione. Questo è il canale più sicuro per la distribuzione remota.
  • Nessuno: questa modalità di autenticazione deve essere usata solo per un PC remoto (desktop o laptop) in cui è in esecuzione Visual Studio Remote Tools. Usare questa modalità di autenticazione quando in un ambiente è stato configurato un computer di test in cui un account di test è connesso e non si è in grado di immettere le credenziali. Assicurarsi che le impostazioni del debugger remoto siano impostate per non accettare alcuna autenticazione.

Opzioni di distribuzione remota avanzata

Con il rilascio di Visual Studio 2015 Update 3 e Aggiornamento dell'anniversario di Windows 10, sono disponibili nuove opzioni avanzate di distribuzione remota per determinati dispositivi Windows 10. Le opzioni avanzate di distribuzione remota sono disponibili nel menu Debug per le proprietà del progetto.

Le nuove proprietà includono:

  • Tipo di distribuzione
  • Percorso di registrazione del pacchetto
  • Mantenere tutti i file nel dispositivo, anche quelli che non fanno più parte del layout

Requisiti

Per usare le opzioni avanzate di distribuzione remota, è necessario soddisfare i requisiti seguenti:

  • Avere installato Visual Studio 2015 Update 3 o una versione successiva di Visual Studio con Windows 10 Tools 1.4.1 o versione successiva (che include l'SDK di Windows 10 Anniversary Update). È consigliabile usare l'ultima versione di Visual Studio con gli aggiornamenti per verificare di avere tutte le caratteristiche di sviluppo e di sicurezza più recenti.
  • Scegliere come destinazione un dispositivo remoto Xbox con Aggiornamento dell'anniversario di Windows 10 o un PC Windows 10 Creators Update
  • Usare la modalità Autenticazione universale

Pagine delle proprietà

Per un'app UWP C# o Visual Basic, la pagina delle proprietà è simile alla seguente.

CS or VB properties

Per un'app UWP C++, la pagina delle proprietà è simile alla seguente.

Cpp properties

Copiare file nel dispositivo

L'opzione Copia file nel dispositivo trasferisce fisicamente i file tramite la rete al dispositivo remoto. Verrà copiato e registrato il layout del pacchetto creato in Percorso cartella di layout. Visual Studio mantiene i file copiati nel dispositivo sincronizzati con i file del progetto di Visual Studio, tuttavia, è disponibile l'opzione Mantieni tutti i file nel dispositivo, anche quelli che non fanno più parte del layout. Se si seleziona questa opzione, i file che sono stati copiati in precedenza nel dispositivo remoto ma che non fanno più parte del progetto rimarranno nel dispositivo remoto.

Il valore di Percorso di registrazione pacchetto specificato durante l'operazione Copia file nel dispositivo indica la posizione fisica nel dispositivo remoto in cui vengono copiati i file. Questo percorso può essere specificato come qualsiasi percorso relativo. La posizione in cui i file vengono distribuiti sarà relativa a una radice dei file di sviluppo che varia a seconda del dispositivo di destinazione. Specificare questo percorso è utile quando più sviluppatori condividono lo stesso dispositivo e lavorano su pacchetti con build diverse.

Nota

L'opzione Copia file nel dispositivo è attualmente supportata nell'Xbox che esegue Aggiornamento dell'anniversario di Windows 10 e nei PC con Windows 10 Creators Update.

Nel dispositivo remoto il layout viene copiato nella posizione predefinita seguente: \\MY-DEVKIT\DevelopmentFiles\PACKAGE-REGISTRATION-PATH

Registrare il layout dalla rete

Quando si sceglie di registrare il layout dalla rete, è possibile creare un layout di pacchetto in una condivisione di rete e quindi registrare il layout nel dispositivo remoto direttamente dalla rete. A tale scopo, è necessario specificare un percorso della cartella di layout (una condivisione di rete) accessibile dal dispositivo remoto. La proprietà Percorso cartella di layout rappresenta il percorso impostato in modo relativo rispetto al PC che esegue Visual Studio, mentre la proprietà Percorso di registrazione pacchetto rappresenta lo stesso percorso, ma specificato in modo relativo rispetto al dispositivo remoto.

Per registrare correttamente il layout dalla rete, è necessario prima impostare Percorso cartella di layout come cartella di rete condivisa. A tale scopo, fare clic con il pulsante destro del mouse sulla cartella in Esplora File, scegliere Condividere con > Utenti specifici e quindi scegliere gli utenti con cui si vuole condividere la cartella. Quando si prova a registrare il layout dalla rete, verranno chieste le credenziali per verificare che la registrazione venga eseguita come utente con accesso alla condivisione.

Per informazioni, vedere gli esempi seguenti:

  • Esempio 1 (cartella di layout locale, accessibile come condivisione di rete):

    • Percorso della cartella del layout = D:\Layouts\App1
    • Percorso di registrazione del pacchetto = \\NETWORK-SHARE\Layouts\App1
  • Esempio 2 (cartella di layout di rete):

    • Percorso della cartella del layout = \\NETWORK-SHARE\Layouts\App1
    • Percorso di registrazione del pacchetto = \\NETWORK-SHARE\Layouts\App1

Quando si registra per la prima volta il layout dalla rete, le credenziali verranno memorizzate nella cache del dispositivo di destinazione, in modo che non sia necessario eseguire più volte l'accesso. Per rimuovere le credenziali memorizzate nella cache, è possibile usare lo strumento WinAppDeployCmd.exe disponibile in Windows 10 SDK con il comando deletecreds.

Non è possibile selezionare Mantenere tutti i file nel dispositivo quando si registra il layout dalla rete perché i file non vengono copiati fisicamente nel dispositivo remoto.

Nota

L'opzione Registra layout dalla rete è attualmente supportata nell'Xbox che esegue Aggiornamento dell'anniversario di Windows 10 e nei PC con Windows 10 Creators Update.

Nel dispositivo remoto il layout viene registrato nella posizione predefinita seguente, a seconda della famiglia di dispositivi: Xbox: \\MY-DEVKIT\DevelopmentFiles\XrfsFiles - questo è un symlink per il percorso di registrazione pacchetto, il PC non usa un symlink e registra invece direttamente il percorso di registrazione pacchetto

Opzioni di debug

In Windows 10 le prestazioni di avvio delle app UWP sono state migliorate grazie a una tecnica basata sull'avvio proattivo e sulla successiva sospensione delle app definita preavvio. Per molte app non sono necessari operazioni particolari per usare questa modalità, tuttavia alcune app possono richiedere alcune modifiche al comportamento. Per semplificare il debug di eventuali problemi in questi percorsi di codice, si può avviare il debug dell'app da Visual Studio in modalità di preavvio.

Il debug è supportato sia da un progetto di Visual Studio (Debug ->Altre destinazioni di debug ->Esegui debug preavvio app di Windows universale), sia per le app già installate nel computer (Debug ->Altre destinazioni di debug ->Debug pacchetto applicazione installato selezionando la casella di controllo Attiva l'app con preavvio). Per altre informazioni, vedere l'argomento relativo al debug del preavvio di app UWP.

È possibile impostare le opzioni di distribuzione seguenti nella pagina delle proprietà Debug del progetto di avvio:

  • Consenti loopback della rete locale

    Per motivi di sicurezza un'app UWP installata in modo standard non è autorizzata a effettuare chiamate di rete al dispositivo in cui è installata. Per impostazione predefinita, la distribuzione di Visual Studio crea una esenzione da questa regola per l'app distribuita. Questa esenzione ti consente di verificare le procedure di comunicazione in un singolo computer. Prima di inviare l'app a Microsoft Store, devi testare l'app senza l'esenzione.

    Per rimuovere l'esenzione relativa al loopback della rete:

    • In C# e Visual Basic, nella pagina delle proprietà Debug deselezionare la casella di controllo Consentire loopback della rete locale.
    • In JavaScript e in C++, nella pagina delle proprietàDebug impostare il valore di Consentiew loopback della rete locale su No.
  • Non eseguire il codice utente, ma eseguine il debug all'avvio/Avvia applicazione

    Per configurare la distribuzione in modo da avviare automaticamente una sessione di debug all'avvio dell'app:

    • In C# e Visual Basic, nella pagina delle proprietà Debug selezionare la casella di controllo Non eseguire il codice utente, ma eseguire il debug all'avvio.
    • In JavaScript e C++, nella pagina delle proprietà Debug impostare il valore di Avviare app su .

Simboli

I file di simboli contengono svariati dati utili per il debug del codice, come variabili, nomi di funzioni e indirizzi dei punti di ingresso, che consentono di comprendere meglio le eccezioni e l'ordine di esecuzione dello stack di chiamate. I simboli per la maggior parte delle varianti di Windows sono disponibili nel server dei simboli Microsoft oppure è possibile scaricarli dalla pagina Scaricare i pacchetti di simboli di Windows e cercarli più velocemente offline.

Per impostare le opzioni dei simboli per Visual Studio, selezionare Strumenti > Opzioni e quindi passare a Debug > Simboli nella finestra di dialogo.

Options dialog box

Per caricare i simboli in una sessione di debug con WinDbg, impostare la variabile sympath sul percorso del pacchetto di simboli. Ad esempio, l'esecuzione del comando seguente caricherà i simboli dal server dei simboli Microsoft e quindi li memorizzerà nella directory C:\Symbols:

.sympath SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
.reload

Si possono aggiungere altri percorsi usando il delimitatore ‘;’ oppure usare il comando .sympath+. Per altre operazioni avanzate con i simboli che usano WinDbg, vedere l'articolo relativo ai simboli pubblici e privati.

WinDbg

WinDbg è un debugger avanzato che fa parte della suite Debugging Tools for Windows, inclusa in Windows SDK. L'installazione di Windows SDK consente di installare Debugging Tools for Windows come prodotto autonomo. Anche se è molto utile per il debug del codice nativo, consigliamo di non usare WinDbg per le app scritte in codice gestito o HTML5.

Per usare WinDbg con le app UWP, occorre prima disabilitare Gestione del ciclo di vita dei processi per il pacchetto dell'app usando PLMDebug, come descritto in Strumenti di test e debug per Gestione del ciclo di vita dei processi.

plmdebug /enableDebug [PackageFullName] ""C:\Program Files\Debugging Tools for Windows (x64)\WinDbg.exe\" -server npipe:pipe=test"

Al contrario di Visual Studio, la maggior parte delle principali funzionalità di WinDbg consiste nel fornire i comandi alla finestra dei comandi. I comandi forniti consentono di visualizzare lo stato dell'esecuzione, analizzare i dump di arresto anomalo del sistema in modalità utente ed eseguire il debug in diverse modalità.

Uno dei più comuni comandi in WinDbg è !analyze -v, usato per recuperare una quantità dettagliata di informazioni sull'eccezione corrente, tra cui:

  • FAULTING_IP: puntatore dell'istruzione al momento dell'errore
  • EXCEPTION_RECORD: indirizzo, codice e flag dell'eccezione corrente
  • STACK_TEXT: analisi dello stack prima dell'eccezione

Per un elenco completo di tutti i comandi di WinDbg, vedere la pagina relativa ai comandi del debugger.