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

V sadě Visual Studio umožňuje nasazení ClickOnce nakonfigurovat způsob aktualizace aplikace. Pokud ale potřebujete použít a přizpůsobit pokročilé funkce nasazení ClickOnce, budete potřebovat přístup k modelu objektu nasazení, který System.Deployment.Applicationposkytuje . Rozhraní API můžete použít System.Deployment.Application pro pokročilé úlohy, jako jsou:

  • 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 aktuální

    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 spuštění a spuštění aplikace před připojením ladicího programu. Řešením je umístit konce (nebo zarážky) před kontrolou kódu aktualizace nebo kódem na vyžádání.

    Doporučená technika 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 klikněte na Nový a potom na Projekt. 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 archivované zdrojové umístění do vlastností tohoto nového řešení. V Průzkumník řešení klikněte pravým tlačítkem myši na uzel řešení a potom klikněte na příkaz 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 zjistí zastaralé zdrojové soubory, protože cesty ke zdrojovému souboru se zaznamenávají do 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 je nasadili s aplikací, ladicí program je najde automaticky. Vždy vypadá jako první vedle příslušného sestavení. V opačném případě budete muset přidat cestu archivu do umístění souboru symbolu (.pdb) (pro přístup k této možnosti v nabídce Nástroje klikněte na Možnosti, otevřete uzel Ladění a klikněte na Symboly).

  6. Ladění toho, co se stane mezi voláními CheckForUpdate metody a Download/Update metodou

    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, zatímco stáhne aktualizaci pro 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 model Windows Forms aplikaci a máte obslužnou rutinu události pro tuto metodu s logikou aktualizace. Pokud chcete tento postup ladit, stačí ho připojit před stisknutím tlačítka a pak nastavit zarážku (ujistěte se, že otevřete příslušný archivovaný soubor a nastavíte zarážku tam).

    IsNetworkDeployed Vlastnost použijte k vyvolání System.Deployment.Application rozhraní API pouze v případě, že je aplikace nasazena. Rozhraní API by se neměla vyvolat během ladění v sadě Visual Studio.