Condividi tramite


Distribuzione e debug di app UWP

Questo articolo illustra i passaggi per mirare a diversi obiettivi di distribuzione e debug.

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

Selezione di una destinazione di distribuzione

Per selezionare una destinazione, vai al menu a tendina della destinazione di debug accanto al pulsante Avvia debug e scegliere la destinazione di distribuzione dell'app. Dopo aver selezionato la destinazione, selezionare Avvia debug (F5) per distribuire ed eseguire il debug in tale destinazione oppure selezionare CTRL+F5 per eseguire solo la distribuzione in tale destinazione.

Eseguire il debug dell'elenco di destinazione del dispositivo

  • Simulatore distribuirà l'applicazione in un ambiente simulato sulla macchina di sviluppo attuale. Questa opzione è disponibile solo se versione minima della piattaforma di destinazione dell'app è minore o uguale al sistema operativo nel computer di sviluppo.
  • Macchina locale effettuerà il deployment dell'app sulla tua macchina di sviluppo corrente. Questa opzione è disponibile solo se versione minima della piattaforma di destinazione dell'app è minore o uguale al sistema operativo nel computer di sviluppo.
  • Macchina remota consente di specificare una destinazione remota per distribuire l'app. È possibile trovare ulteriori informazioni sulla distribuzione su una macchina remota in Specificare un dispositivo remoto.
  • Dispositivo distribuirà l'app su un dispositivo collegato via USB. Il dispositivo deve essere sbloccato dallo sviluppatore e avere lo schermo sbloccato.
  • Un emulatore di destinazione avvierà e distribuirà l'app a un emulatore con la configurazione specificata nel nome. Gli emulatori sono disponibili solo nei computer abilitati Hyper-V che eseguono Windows 8.1 o versioni successive.

Debugging delle applicazioni distribuite

Visual Studio può anche connettersi a qualsiasi processo di app UWP in esecuzione selezionando Debuge quindi Collega al processo. La connessione a un processo in esecuzione non richiede il progetto di Visual Studio originale, ma caricare i simboli del processo aiuta notevolmente durante il debug di un processo per cui non si ha il codice originale.

Inoltre, qualsiasi pacchetto di app installato può essere associato e sottoposto a debug selezionando Debug, Altroe quindi Debug Pacchetti App Installati.

finestra di dialogo di debug del pacchetto dell'app installata

Selezionando Non avviare, ma eseguire il debug del codice all'avvio, il debugger di Visual Studio si collegherà alla tua app UWP quando la avvii in un momento personalizzato. Si tratta di un modo efficace per eseguire il debug dei percorsi di controllo di diversi metodi di avvio, ad esempio l'attivazione del protocollo con parametri personalizzati.

Le app UWP possono essere sviluppate e compilate in Windows 8.1 o versione successiva, ma richiedono l'esecuzione di Windows 10. Se stai sviluppando un'app UWP in un PC Windows 8.1, puoi eseguire il debug remoto di un'app UWP in esecuzione in un altro dispositivo Windows 10, purché sia l'host che il computer di destinazione si trovino nella stessa LAN. A tale scopo, scaricare e installare gli Strumenti remoti per Visual Studio su entrambi i computer. La versione installata deve corrispondere alla versione esistente di Visual Studio installata e l'architettura selezionata (x86, x64) deve corrispondere anche a quella dell'app di destinazione.

Layout del pacchetto

A partire da Visual Studio 2015 Update 3, è stata aggiunta l'opzione per gli sviluppatori per specificare il percorso di layout per le app UWP. Ciò determina dove viene copiato il layout del pacchetto su disco quando si compila l'app. Per impostazione predefinita, questa proprietà viene impostata in relazione alla directory radice del progetto. Se questa proprietà non viene modificata, il comportamento rimarrà invariato per le versioni precedenti di Visual Studio.

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

Se vuoi includere tutti i file di layout nel pacchetto quando crei un pacchetto per l'app, devi 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 selezionare Modifica [nomeprogetto].xxproj (xxproj cambierà a seconda del linguaggio del progetto).
  3. Aggiungi la proprietà e poi ricarica il progetto.

Specificare un dispositivo remoto

C# e Microsoft Visual Basic

Per specificare un computer remoto per le app C# o Microsoft Visual Basic, selezionare Computer remoto nella casella a discesa della destinazione di debug. Verrà visualizzata la finestra di dialogo Connessioni Remote, che consentirà di specificare un indirizzo IP o selezionare un dispositivo individuato. Per impostazione predefinita, è selezionata la modalità di autenticazione universale . Per determinare la modalità di autenticazione da usare, vedere modalità di autenticazione.

finestra di dialogo Connessioni remote

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

scheda Debug

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

C++ e JavaScript

Per specificare una destinazione del computer 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 a impostazioni di debug e in Debugger per avviareselezionare Computer remoto.
  3. Immettere il nome computer (oppure fare clic su Individua per trovarne uno) e quindi impostare la proprietà tipo di autenticazione.

pagine delle proprietà di debug

Dopo aver specificato la macchina, è possibile selezionare Macchina Remota nel menu a discesa della destinazione di debug per tornare alla macchina specificata. È possibile selezionare un solo computer remoto alla volta.

Istruzioni per PC remoti

Annotazioni

Queste istruzioni sono necessarie solo per le versioni precedenti di Windows 10. A partire da Creators Update, un PC può essere trattato come un Xbox. Ovvero, abilitando l'individuazione dei dispositivi nel menu Modalità sviluppatore del PC e usando l'autenticazione universale per associare il PIN e connettersi al PC.

Per eseguire la distribuzione in un PC remoto pre-Creators Update, è necessario che nel PC di destinazione sia installato Visual Studio Remote Tools. Il PC remoto deve anche eseguire una versione di Windows che sia maggiore o uguale alla proprietà Versione minima della piattaforma di destinazione della tua app. Dopo aver installato gli strumenti remoti, è necessario avviare il debugger remoto nel PC di destinazione.

A tale scopo, cercare debugger remoto nel menu Start, aprirlo e, se richiesto, consentire al debugger di configurare le impostazioni del firewall. Per impostazione predefinita, il debugger viene avviato con l'autenticazione di Windows. Questa operazione richiederà le credenziali utente se l'utente connesso non è lo stesso in entrambi i PC.

Per modificarlo in Nessuna autenticazione, nel Debugger remoto, passare a Strumenti ->Opzionie quindi impostarlo su Nessuna autenticazione. Dopo aver configurato il debugger remoto, è anche necessario assicurarsi di aver impostato il dispositivo host su modalità sviluppatore. Successivamente, è possibile eseguire la distribuzione dal computer di sviluppo.

Per altre informazioni, vedere la pagina dell'Area download di Visual Studio .

Passare argomenti di debug nella riga di comando

In Visual Studio 2019 è possibile passare argomenti per il debug dalla riga di comando quando si avvia il debug delle app UWP. È possibile 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, aprire le proprietà del progetto e passare alla scheda Debug.

Annotazioni

Questa opzione è 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 ad eccezione del simulatore.

Per i progetti UWP in C# e VB, vedrai un campo argomenti della riga di comando: sotto Opzioni di avvio.

argomenti della riga di comando

Per i progetti UWP C++ e JS, vedrai argomenti della riga di comando come campo nella Proprietà di debug.

Screenshot delle pagine delle proprietà dell'app 4 con proprietà di configurazione > quando l'opzione di debug selezionata mostra la proprietà Argomenti della riga di comando elencata nella tabella.

Dopo aver specificato gli argomenti della riga di comando, è possibile 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 degli argomenti della riga di comando per C++ e JS.

Modalità di autenticazione

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

  • universale (protocollo non crittografato): usare questa modalità di autenticazione ogni volta che si esegue la 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. Universal (Protocollo non crittografato) deve essere usato solo in reti attendibili. La connessione di debug è vulnerabile agli utenti malintenzionati che potrebbero intercettare e modificare i dati trasferiti tra la macchina di sviluppo e il computer remoto.
  • Windows: questa modalità di autenticazione deve essere usata solo per un PC remoto (desktop o portatile) che esegue Visual Studio Remote Tools. Usare questa modalità di autenticazione quando si ha accesso alle credenziali dell'utente connesso del computer di destinazione. Questo è il canale più sicuro per la distribuzione remota.
  • Nessuna: questa modalità di autenticazione deve essere usata solo per un PC remoto (desktop o portatile) che esegue Visual Studio Remote Tools. Usare questa modalità di autenticazione quando si dispone di un computer di test configurato in un ambiente con un account di test connesso e non è possibile immettere le credenziali. Assicurarsi che le impostazioni del debugger remoto siano impostate in modo da non accettare alcuna autenticazione.

Opzioni avanzate di distribuzione remota

A partire dalla versione di Visual Studio 2015 Update 3 e dall'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
  • Mantieni 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:

  • Disporre di Visual Studio 2015 Update 3 o di una versione successiva di Visual Studio installata con Windows 10 Tools 1.4.1 o versione successiva(che include Windows 10 Anniversary Update SDK) È consigliabile usare la versione più recente di Visual Studio con gli aggiornamenti per assicurarsi di ottenere tutte le funzionalità di sviluppo e 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à di autenticazione universale

Pagine delle proprietà

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

proprietà CS o VB

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

proprietà Cpp

Copiare file nel dispositivo

Copiare i file nel dispositivo trasferisce fisicamente i file in rete al dispositivo remoto. Copia e registra il layout del pacchetto compilato nel percorso della cartella layout . Visual Studio manterrà sincronizzati i file copiati nel dispositivo con i file nel progetto di Visual Studio; Tuttavia, è possibile mantenere tutti i file nel dispositivo, anche quelli che non fanno più parte del layout. Se si seleziona questa opzione, tutti i file copiati in precedenza nel dispositivo remoto, ma non fanno più parte del progetto, rimarranno nel dispositivo remoto.

Il percorso di registrazione del pacchetto specificato quando copi i file sul dispositivo è la posizione fisica sul dispositivo remoto dove vengono copiati i file. Questo percorso può essere specificato come qualsiasi percorso relativo. Il percorso in cui vengono distribuiti i file sarà relativo a una cartella principale dei file di sviluppo che varierà a seconda del dispositivo di destinazione. Specificare questo percorso è utile per più sviluppatori che condividono lo stesso dispositivo e usano pacchetti con una varianza di compilazione.

Annotazioni

Copia file nel dispositivo è attualmente supportato su Xbox che esegue Windows 10 Anniversary Update e su PC che eseguono Windows 10 Creators Update.

Nel dispositivo remoto il layout viene copiato nel percorso predefinito seguente: \\MY-DEVKIT\DevelopmentFiles\PACKAGE-REGISTRATION-PATH

Registrare il layout dalla rete

Quando si sceglie di registrare il layout dalla rete, è possibile creare il layout del pacchetto in una condivisione di rete e quindi registrare il layout sul dispositivo remoto direttamente dalla rete. È quindi necessario specificare un percorso della cartella di layout (una condivisione di rete) accessibile dal dispositivo remoto. Il percorso della cartella layout proprietà è il percorso impostato rispetto al PC che esegue Visual Studio, mentre il percorso di registrazione del pacchetto proprietà è lo stesso percorso, ma specificato rispetto al dispositivo remoto.

Per registrare correttamente il layout dalla rete, è prima necessario impostare percorso della cartella Layout una cartella di rete condivisa. A tale scopo, fare clic con il pulsante destro del mouse sulla cartella in Esplora file, selezionare Condividi con > Utenti specificie quindi scegliere gli utenti con cui condividere la cartella. Quando si tenta di registrare il layout dalla rete, verranno richieste le credenziali per assicurarsi di eseguire la registrazione come utente con accesso alla condivisione.

Per informazioni su questo problema, vedere gli esempi seguenti:

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

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

    • percorso cartella layout
    • 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 nel dispositivo di destinazione in modo da non dover eseguire ripetutamente l'accesso. Per rimuovere le credenziali memorizzate nella cache, puoi usare il WinAppDeployCmd.exe strumento del Windows 10 SDK con il comando deletecreds.

Non è possibile selezionare mantenere tutti i file nel dispositivo quando si registra il layout dalla rete perché nessun file viene copiato fisicamente nel dispositivo remoto.

Annotazioni

Il layout di registro dalla rete è attualmente supportato su Xbox che esegue il Windows 10 Anniversary Update e su PC che eseguono il 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 : si tratta di un collegamento simbolico al percorso di registrazione del pacchetto PC non usa un collegamento simbolico e registra invece direttamente il percorso di registrazione del pacchetto

Opzioni di debug

In Windows 10 le prestazioni di avvio delle app UWP vengono migliorate avviando in modo proattivo e quindi sospendendo le app in una tecnica denominata preavvio. Molte app non dovranno eseguire alcuna operazione speciale per funzionare in questa modalità, ma alcune app potrebbero dover regolare il comportamento. Per eseguire il debug di eventuali problemi in questi percorsi di codice, è possibile 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 ->Debugapp di Windows universale ) sia per le app già installate in machine (Debug ->Altre destinazioni di debug ->Debug pacchetto app installato selezionando la casella di controllo Attiva app con di preavvio). Per altre informazioni, vedere Eseguire il preavvio della piattaforma UWP.

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

  • Consenti loopback di rete locale

    Per motivi di sicurezza, un'app UWP installata nel modo standard non può effettuare chiamate di rete al dispositivo in cui è installato. Per impostazione predefinita, la distribuzione di Visual Studio crea un'esenzione da questa regola per l'app distribuita. Questa esenzione consente di testare 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 del loopback di rete dall'app:

    • Nella pagina delle proprietà Debug di C# e Visual Basic, deselezionare la casella di controllo Consenti loopback della rete locale.
    • Nella pagina delle proprietà Debug di JavaScript e C++, impostare il valore Consenti loopback della rete locale su No.
  • Non avviare, ma eseguire il debug del codice quando viene avviato / Avvia Applicazione

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

    • Nella pagina delle proprietà C# e Visual Basic Debug, selezionare la casella di controllo Non avviare, ma eseguire il debug del mio codice all'avvio.
    • Nella pagina delle proprietà JavaScript e C++ Debug, impostare il valore Avvio applicazione su .

Simboli

I file di simboli contengono un'ampia gamma di dati molto utili durante il debug di codice, ad esempio variabili, nomi di funzione 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 tramite il Microsoft Symbol Server oppure è possibile scaricarli per effettuare ricerche offline più velocemente, accedendo a Pacchetti di simboli di Windows da scaricare.

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

finestra di dialogo Opzioni

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 memorizza nella cache nella directory C:\Symbols:

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

È possibile aggiungere altri percorsi usando il delimitatore ‘;’ oppure usare il comando .sympath+. Per operazioni di simboli più avanzate che usano WinDbg, vedere simboli pubblici e privati.

WinDbg

WinDbg è un potente debugger fornito come parte della suite Strumenti di debug per Windows, inclusa nella Windows SDK. L'installazione di Windows SDK consente di installare Gli strumenti di debug per Windows come prodotto autonomo. Sebbene sia estremamente utile per il debug di codice nativo, non è consigliabile usare WinDbg per le app scritte in codice gestito o HTML5.

Per usare WinDbg con le app UWP, dovrai prima disabilitare La gestione della durata dei processi per il pacchetto dell'app usando PLMDebug, come descritto in Strumenti di test e debug per gestione della durata dei processi (PLM).

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

A differenza di Visual Studio, la maggior parte delle funzionalità di base di WinDbg si basa sulla fornitura di comandi alla finestra di comando. I comandi forniti consentono di visualizzare lo stato di esecuzione, analizzare i dump di arresto anomalo della modalità utente ed eseguire il debug in diverse modalità.

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

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

Per un elenco completo di tutti i comandi winDbg, vedere Debugger Commands.