Felsöka ClickOnce-program som använder System.Deployment.Application

Med ClickOnce-distributionen i Visual Studio kan du konfigurera hur ett program uppdateras. Men om du vill använda och anpassa avancerade ClickOnce-distributionsfunktioner behöver du åtkomst till den distributionsobjektmodell som tillhandahålls av System.Deployment.Application. Du kan använda API:erna System.Deployment.Application för avancerade uppgifter, till exempel:

  • Skapa ett "Uppdatera nu"-alternativ i ditt program

  • Villkorliga nedladdningar på begäran av olika programkomponenter

  • Uppdateringar som är integrerade direkt i programmet

  • Garantera att klientprogrammet alltid är up-to-date

    Eftersom API:erna System.Deployment.Application bara fungerar när ett program distribueras med ClickOnce-teknik är det enda sättet att felsöka dem att distribuera programmet med Hjälp av ClickOnce, ansluta till det och sedan felsöka det. Det kan vara svårt att koppla felsökningsprogrammet tillräckligt tidigt, eftersom den här koden ofta körs när programmet startas och körs innan du kan koppla felsökningsprogrammet. En lösning är att placera pauser (eller stopp för Visual Basic-projekt) före din uppdateringskontrollkod eller kod på begäran.

    Den rekommenderade felsökningstekniken är följande:

Anmärkning

Klassen ApplicationDeployment och API:erna System.Deployment.Application i namnområdet stöds inte i .NET Core- och .NET 5- och senare versioner. I .NET 7 stöds en ny metod för att komma åt egenskaper för programdistribution. Mer information finns i Access ClickOnce distributionsegenskaper i .NET. .NET 7 stöder inte motsvarigheten till ApplicationDeployment-metoder.

  1. Kontrollera att symbolfilerna (.pdb) och källfilerna arkiveras innan du börjar.

  2. Distribuera version 1 av programmet.

  3. Skapa en ny tom lösning. På menyn Arkiv väljer du Nytt och sedan Projekt. I dialogrutan Nytt projekt öppnar du noden Andra projekttyper och väljer sedan mappen Visual Studio Solutions . I fönstret Mallar väljer du Tom lösning.

  4. Lägg till den arkiverade källplatsen i egenskaperna för den nya lösningen. Högerklicka på lösningsnoden i Solution Explorer och välj sedan Egenskaper. I dialogrutan Egenskapssidor väljer du Felsöka källfiler och lägger sedan till katalogen för den arkiverade källkoden. Annars hittar felsökaren inaktuella källfiler eftersom källfilsökvägarna registreras i .pdb-filen . Om felsökaren använder inaktuella källfiler visas ett meddelande om att källan inte matchar.

  5. Kontrollera att felsökaren kan hitta .pdb-filerna . Om du har distribuerat filerna med ditt program hittar felsökaren dem automatiskt. Det ser alltid ut bredvid sammansättningen i fråga först. Annars måste du lägga till arkivsökvägen i listan med symbolfilplatser.

    Öppna fönstret Verktyg (eller Debuggning) >Alternativ och expandera avsnittet Alla Inställningar>Debuggning>Symboler>Sökplatser. Lägg till, ändra ordning eller ta bort objekt från listan symbolfilplatser (.pdb ).

    Öppna dialogrutan Verktyg (eller Felsökning) >och expandera avsnittetFelsökningssymboler>. Lägg till, ändra ordning eller ta bort poster från listan över sökvägar för symbolfil (.pdb).

  6. Felsöka vad som händer mellan metodanropen CheckForUpdate och Download/Update .

    Uppdateringskoden kan till exempel vara följande:

        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. Distribuera version 2.

  8. Försök att koppla felsökningsprogrammet till version 1-programmet medan det laddar ned en uppdatering för version 2. Du kan också använda System.Diagnostics.Debugger.Break metoden eller helt enkelt Stop i Visual Basic. Du bör naturligtvis inte lämna dessa metodanrop i produktionskoden.

    Anta till exempel att du utvecklar ett Windows Forms-program och att du har en händelsehanterare för den här metoden med uppdateringslogik i den. Om du vill felsöka detta ansluter du bara innan knappen trycks in och anger sedan en brytpunkt (se till att du öppnar lämplig arkiverad fil och ställer in brytpunkten där).

    IsNetworkDeployed Använd egenskapen för att anropa API:erna System.Deployment.Application endast när programmet distribueras. API:erna ska inte anropas under felsökning i Visual Studio.