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.
Než začnete, ujistěte se, že jsou soubory symbolu (.pdb) a zdrojové soubory archivovány.
Nasaďte verzi 1 aplikace.
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í.
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á.
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).
Ladění toho, co se stane mezi voláními
CheckForUpdate
metody aDownload
/Update
metodouNapří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
Nasazení verze 2
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šeStop
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.