Debug di applicazioni ClickOnce in cui si usa System.Deployment.Application

In Visual Studio la distribuzione ClickOnce consente di configurare la modalità di aggiornamento di un'applicazione. Tuttavia, se è necessario usare e personalizzare le funzionalità avanzate di distribuzione ClickOnce, sarà necessario accedere al modello a oggetti di distribuzione fornito da System.Deployment.Application. È possibile usare le System.Deployment.Application API per attività avanzate, ad esempio:

  • Creazione di un'opzione "Aggiorna ora" nell'applicazione

  • Download condizionali su richiesta di vari componenti dell'applicazione

  • Aggiornamenti integrato direttamente nell'applicazione

  • Garanzia che l'applicazione client sia sempre aggiornata

    Poiché le System.Deployment.Application API funzionano solo quando un'applicazione viene distribuita con la tecnologia ClickOnce, l'unico modo per eseguirne il debug consiste nel distribuire l'applicazione usando ClickOnce, collegarla e quindi eseguirne il debug. Può essere difficile collegare il debugger in anticipo, perché questo codice viene spesso eseguito all'avvio e all'esecuzione dell'applicazione prima di poter collegare il debugger. Una soluzione consiste nell'inserire interruzioni (o arresti, per i progetti Visual Basic) prima del codice di controllo dell'aggiornamento o del codice su richiesta.

    La tecnica di debug consigliata è la seguente:

Nota

La ApplicationDeployment classe e le API nello System.Deployment.Application spazio dei nomi non sono supportate in .NET Core e .NET 5 e versioni successive. In .NET 7 è supportato un nuovo metodo di accesso alle proprietà di distribuzione dell'applicazione. Per altre informazioni, vedere Accedere alle proprietà di distribuzione ClickOnce in .NET. .NET 7 non supporta l'equivalente dei metodi ApplicationDeployment.

  1. Prima di iniziare, verificare che i file simbolo (con estensione pdb) e i file di origine siano archiviati.

  2. Distribuire la versione 1 dell'applicazione.

  3. Creare una nuova soluzione vuota. Scegliere Nuovo dal menu File, quindi Progetto. Nella finestra di dialogo Nuovo progetto aprire il nodo Altri tipi di progetto e quindi selezionare la cartella Soluzioni di Visual Studio. Nel riquadro Modelli selezionare Soluzione vuota.

  4. Aggiungere il percorso di origine archiviato alle proprietà per questa nuova soluzione. In Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo della soluzione, quindi scegliere Proprietà. Nella finestra di dialogo Pagine delle proprietà selezionare Debug file di origine e quindi aggiungere la directory del codice sorgente archiviato. In caso contrario, il debugger troverà i file di origine non aggiornati, poiché i percorsi dei file di origine vengono registrati nel file con estensione pdb. Se il debugger usa file di origine non aggiornati, viene visualizzato un messaggio che informa che l'origine non corrisponde.

  5. Assicurarsi che il debugger sia in grado di trovare i file con estensione pdb . Se sono stati distribuiti con l'applicazione, il debugger li trova automaticamente. Sembra sempre accanto all'assembly in questione per primo. In caso contrario, sarà necessario aggiungere il percorso di archivio ai percorsi del file di simboli (con estensione pdb) (per accedere a questa opzione, scegliere Opzioni dal menu Strumenti, quindi aprire il nodo Debug e fare clic su Simboli).

  6. Eseguire il debug di ciò che accade tra le chiamate al CheckForUpdate metodo e/DownloadUpdate .

    Ad esempio, il codice di aggiornamento potrebbe essere il seguente:

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            If My.Application.Deployment.IsNetworkDeployed Then
    
                If (My.Application.Deployment.CheckForUpdate()) Then
    
                    My.Application.Deployment.Update()
                    Application.Restart()
    
                End If
    
            End If
        End Sub
    
  7. Distribuire la versione 2.

  8. Tentare di collegare il debugger all'applicazione versione 1 mentre scarica un aggiornamento per la versione 2. In alternativa, è possibile usare il System.Diagnostics.Debugger.Break metodo o semplicemente Stop in Visual Basic. Naturalmente, non è consigliabile lasciare queste chiamate al metodo nel codice di produzione.

    Si supponga, ad esempio, di sviluppare un'applicazione Windows Form e di disporre di un gestore eventi per questo metodo con la logica di aggiornamento. Per eseguire il debug, è sufficiente allegare prima che il pulsante venga premuto, quindi impostare un punto di interruzione (assicurarsi di aprire il file archiviato appropriato e impostare il punto di interruzione in tale punto).

    Usare la IsNetworkDeployed proprietà per richiamare le System.Deployment.Application API solo quando l'applicazione viene distribuita. Le API non devono essere richiamate durante il debug in Visual Studio.