Sdílet prostřednictvím


Ladění aplikací ClickOnce, které používají System.Deployment.Application

V sadě Visual Studio umožňuje nasazení ClickOnce nakonfigurovat způsob aktualizace aplikace. Pokud však chcete použít a přizpůsobit pokročilé funkce nasazení ClickOnce, potřebujete přístup k modelu objektu nasazení, který System.Deployment.Applicationposkytuje . Pro pokročilé úlohy, jako je například, můžete použít rozhraní System.Deployment.Application API.

  • Vytvoření možnosti Aktualizovat hned ve vaší aplikaci

  • Podmíněné stahování různých komponent aplikací na vyžádání

  • Aktualizace integrované přímo do aplikace

  • Záruka, že klientská aplikace je vždy up-to-date

    Vzhledem k tomu, že System.Deployment.Application rozhraní API fungují jenom v případě, že je aplikace nasazená pomocí technologie ClickOnce, jediným způsobem, jak je ladit, je nasadit aplikaci pomocí Technologie ClickOnce, připojit k ní a pak ji ladit. Může být obtížné připojit ladicí program dostatečně brzy, protože tento kód se často spouští při startu aplikace a zpracovává se ještě před tím, než je možné připojit ladicí program. Řešením je umístit přerušení (nebo zarážky, v projektech Visual Basic) před kontrolou aktualizací nebo kód na vyžádání.

    Doporučený postup ladění je následující:

Poznámka:

Třída ApplicationDeployment a rozhraní API v System.Deployment.Application oboru názvů nejsou podporovány v .NET Core a .NET 5 a novějších verzích. V .NET 7 se podporuje nová metoda přístupu k vlastnostem nasazení aplikace. Další informace naleznete v tématu Access ClickOnce vlastnosti nasazení v .NET. .NET 7 nepodporuje ekvivalent metod ApplicationDeployment.

  1. Než začnete, ujistěte se, že jsou soubory symbolu (.pdb) a zdrojové soubory archivovány.

  2. Nasaďte verzi 1 aplikace.

  3. Vytvořte nové prázdné řešení. V nabídce Soubor vyberte Nový a pak Project. V dialogovém okně Nový projekt otevřete uzel Jiné typy projektů a vyberte složku Řešení sady Visual Studio . V podokně Šablony vyberte Prázdné řešení.

  4. Přidejte archivovanou zdrojovou lokaci do parametrů tohoto nového řešení. V Průzkumníku řešení klikněte pravým tlačítkem myši na uzel řešení a pak vyberte Vlastnosti. V dialogovém okně Stránky vlastností vyberte Ladit zdrojové soubory a pak přidejte adresář archivovaného zdrojového kódu. V opačném případě ladicí program najde zastaralé zdrojové soubory, protože cesty ke zdrojovému souboru jsou zaznamenány v souboru .pdb . Pokud ladicí program používá zastaralé zdrojové soubory, zobrazí se zpráva s informací, že zdroj neodpovídá.

  5. Ujistěte se, že ladicí program najde soubory .pdb . Pokud jste nasadili soubory s vaší aplikací, ladicí program je najde automaticky. Vždy vypadá jako první vedle příslušného sestavení. Jinak musíte přidat cestu archivu do seznamu umístění souborů symbolů.

    Otevřete podokno Nástroje (nebo Ladění) >Možnosti a rozbalte část Všech nastavení>Ladění>Symbolů>Umístění hledání. Přidejte, změňte pořadí nebo odeberte položky ze seznamu umístění symbolů (.pdb).

    Otevřete dialogové okno Nástroje (nebo Ladění) >Možnosti, a expandírujte sekci Ladění>Symboly. Přidejte, změňte pořadí nebo odeberte položky ze seznamu umístění pro hledání souborů symbolů (.pdb).

  6. Debugujte, co se stane mezi voláním metody CheckForUpdate a voláním metod Download/Update.

    Například aktualizační kód může vypadat takto:

        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. Nasazení verze 2

  8. Pokus o připojení ladicího programu k aplikaci verze 1 během stahování aktualizace na verzi 2. Alternativně můžete použít metodu System.Diagnostics.Debugger.Break nebo jednoduše Stop v jazyce Visual Basic. Samozřejmě byste neměli nechat tato volání metod v produkčním kódu.

    Předpokládejme například, že vyvíjíte aplikaci Windows Forms a máte obslužnou rutinu události pro tuto metodu s logikou aktualizace. Pokud chcete toto ladit, jednoduše připojte debugger před stisknutím tlačítka a pak nastavte breakpoint (ujistěte se, že otevřete příslušný archivovaný soubor a nastavíte breakpoint tam).

    Použijte vlastnost IsNetworkDeployed k vyvolání API System.Deployment.Application pouze v případě, že je aplikace nasazena. API by se neměly vyvolávat během ladění v sadě Visual Studio.