Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Ve výchozím nastavení se všechna sestavení zahrnutá v aplikaci ClickOnce stáhnou při prvním spuštění aplikace. Můžou ale existovat části vaší aplikace, které používají malá skupina uživatelů. V tomto případě chcete stáhnout sestavení pouze v případě, že vytvoříte jeden z jeho typů. Následující názorný postup ukazuje, jak označit určitá sestavení v aplikaci jako volitelná a jak je stáhnout pomocí tříd v System.Deployment.Application oboru názvů, když je common language runtime požaduje.
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.
Poznámka:
Aby bylo možné tento postup použít, musí vaše aplikace běžet v plném režimu důvěry.
Poznámka:
Zobrazené dialogová okna a příkazy nabídek se můžou lišit od těch, které jsou popsány v nápovědě v závislosti na aktivním nastavení nebo edici. Chcete-li změnit nastavení, klepněte na tlačítko Importovat a exportovat nastavení v nabídce Nástroje . Další informace najdete v tématu Resetování nastavení.
Vytvoření projektů
Vytvoření projektu, který používá sestavení na vyžádání se sadou Visual Studio
Vytvořte nový projekt Windows Forms v sadě Visual Studio. V nabídce Soubor přejděte na příkaz Přidat a klepněte na tlačítko Nový projekt. V dialogovém okně zvolte projekt knihovny tříd a pojmenujte ho
ClickOnceLibrary.Poznámka:
V jazyce Visual Basic doporučujeme upravit vlastnosti projektu, aby se kořenový obor názvů pro tento projekt změnil na
Microsoft.Samples.ClickOnceOnDemandnebo na obor názvů dle vašeho výběru. Pro zjednodušení jsou dva projekty v tomto ukázkovém postupu ve stejném oboru názvů.Definujte třídu pojmenovanou
DynamicClasss jedinou vlastností pojmenovanouMessage.V Průzkumníku řešení vyberte projekt Windows Forms. Přidejte odkaz na System.Deployment.Application sestavení a odkaz na
ClickOnceLibraryprojekt.Poznámka:
V jazyce Visual Basic doporučujeme upravit vlastnost projektu tak, aby se změnil kořenový obor názvů pro tento projekt na
Microsoft.Samples.ClickOnceOnDemandnebo na obor názvů podle vašeho výběru. Pro zjednodušení jsou dva projekty v tomto názorném postupu umístěny ve stejném oboru názvů.Klikněte pravým tlačítkem myši na formulář, v nabídce klikněte na Zobrazit kód a přidejte do formuláře následující odkazy.
Přidejte následující kód pro stažení tohoto sestavení na vyžádání. Tento kód ukazuje, jak mapovat sadu sestavení na název skupiny pomocí obecné Dictionary třídy. Vzhledem k tomu, že v tomto návodu stahujeme pouze jedno sestavení, existuje v naší skupině pouze jedno sestavení. Ve skutečné aplikaci byste pravděpodobně chtěli stáhnout všechna sestavení související s jednou funkcí ve vaší aplikaci současně. Tabulka mapování vám to umožňuje snadno přidružovat všechny knihovny DLL, které patří do funkce s názvem skupiny stahování.
// Maintain a dictionary mapping DLL names to download file groups. This is trivial for this sample, // but will be important in real-world applications where a feature is spread across multiple DLLs, // and you want to download all DLLs for that feature in one shot. Dictionary<String, String> DllMapping = new Dictionary<String, String>(); [SecurityPermission(SecurityAction.Demand, ControlAppDomain=true)] public Form1() { InitializeComponent(); DllMapping["ClickOnceLibrary"] = "ClickOnceLibrary"; AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve); } /* * Use ClickOnce APIs to download the assembly on demand. */ private Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args) { Assembly newAssembly = null; if (ApplicationDeployment.IsNetworkDeployed) { ApplicationDeployment deploy = ApplicationDeployment.CurrentDeployment; // Get the DLL name from the Name argument. string[] nameParts = args.Name.Split(','); string dllName = nameParts[0]; string downloadGroupName = DllMapping[dllName]; try { deploy.DownloadFileGroup(downloadGroupName); } catch (DeploymentException de) { MessageBox.Show("Downloading file group failed. Group name: " + downloadGroupName + "; DLL name: " + args.Name); throw (de); } // Load the assembly. // Assembly.Load() doesn't work here, as the previous failure to load the assembly // is cached by the CLR. LoadFrom() is not recommended. Use LoadFile() instead. try { newAssembly = Assembly.LoadFile(Application.StartupPath + @"\" + dllName + ".dll"); } catch (Exception e) { throw (e); } } else { //Major error - not running under ClickOnce, but missing assembly. Don't know how to recover. throw (new Exception("Cannot load assemblies dynamically - application is not deployed using ClickOnce.")); } return (newAssembly); }V nabídce Zobrazení klikněte na Panel nástrojů. Přetáhněte Button z panelu nástrojů na formulář. Poklikejte na tlačítko a do obslužné rutiny události Click přidejte následující kód.
Označit sestavení jako nepovinná
Označit sestavení jako nepovinná v aplikaci ClickOnce pomocí nástroje Visual Studio
V Průzkumníku řešení klikněte pravým tlačítkem myši na projekt Windows Forms a klikněte na Příkaz Vlastnosti. Vyberte kartu Publikovat .
Klikněte na tlačítko Soubory aplikace .
Vyhledejte výpis pro ClickOnceLibrary.dll. Nastavte rozevírací seznam Publikovat stav na Zahrnout.
Rozbalte rozevírací seznam Skupina a vyberte Nový. Jako název nové skupiny zadejte název
ClickOnceLibrary.Pokračujte v publikování aplikace podle postupu : Publikování aplikace ClickOnce pomocí Průvodce publikováním.
Označení sestavení jako volitelných v aplikaci ClickOnce pomocí nástroje MageUI.exe (grafický klient pro generování a úpravy manifestu)
Vytvořte manifesty ClickOnce, jak je popsáno v návodu: Ruční nasazení aplikace ClickOnce.
Před zavřením MageUI.exevyberte kartu, která obsahuje manifest aplikace vašeho nasazení, a na této kartě vyberte kartu Soubory .
V seznamu souborů aplikace vyhledejte ClickOnceLibrary.dll a nastavte jeho sloupec Typ souboru na Hodnotu Žádné. Do sloupce Seskupování zadejte
ClickOnceLibrary.dll.
Otestování nového sestavení
Otestujte sestavení na vyžádání:
Spusťte aplikaci nasazenou pomocí ClickOnce.
Jakmile se zobrazí hlavní formulář, stiskněte klávesu Button. V okně se zprávou by se měl zobrazit řetězec, který zní "Hello, World!".