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.
Nasazení starších komponent modelu COM bylo tradičně obtížné. Komponenty musí být globálně registrovány, a proto mohou způsobit nežádoucí vedlejší účinky mezi překrývajícími se aplikacemi. Tato situace obecně není problém v aplikacích rozhraní .NET Framework, protože komponenty jsou zcela izolované od aplikace nebo jsou kompatibilní vedle sebe. Visual Studio umožňuje nasadit izolované komponenty modelu COM v operačním systému Windows.
ClickOnce poskytuje snadný a bezpečný mechanismus pro nasazení aplikací .NET. Pokud ale vaše aplikace používají starší komponenty MODELU COM, budete muset provést další kroky pro jejich nasazení. Toto téma popisuje, jak nasadit izolované komponenty modelu COM a odkazovat na nativní komponenty (například z jazyka Visual Basic 6.0 nebo Visual C++).
Další informace o nasazení izolovaných komponent COM naleznete v tématu Zjednodušení nasazení aplikace pomocí ClickOnce a Registration-Free COM.
Com bez registrace
COM bez registrace je nová technologie pro nasazení a aktivaci izolovaných komponent modelu COM. Funguje tak, že všechny knihovny typů a registrační informace komponenty, které jsou obvykle umístěny do systémového registru, jsou vloženy do souboru XML zvaného manifest, uloženého ve stejné složce jako aplikace.
Izolování komponenty modelu COM vyžaduje, aby byla zaregistrovaná na počítači vývojáře, ale nemusí být zaregistrovaná na počítači koncového uživatele. Pokud chcete izolovat složku COM, stačí nastavit její vlastnost Isolated na True. Ve výchozím nastavení je tato vlastnost nastavena na False, což znamená, že by měla být považována za registrovaný odkaz modelu COM. Pokud je tato vlastnost True, způsobí generování manifestu pro tuto komponentu v době sestavení. Také způsobí zkopírování odpovídajících souborů do složky aplikace během instalace.
Když generátor manifestu narazí na izolovaný odkaz na knihovnu COM, vytvoří výčet všech položek CoClass v knihovně typů komponenty, porovná každou položku s odpovídajícími registračními daty a vygeneruje definice manifestu pro všechny COM třídy v souboru knihovny typů.
Nasazení komponent modelu COM bez registrace pomocí ClickOnce
Technologie nasazení ClickOnce je vhodná pro nasazení izolovaných COM komponent, protože jak ClickOnce, tak i COM bez registrace vyžadují, aby měla komponenta k nasazení manifest.
Autor komponenty by obvykle měl poskytnout manifest. Pokud tomu tak není, sada Visual Studio dokáže automaticky vygenerovat manifest pro komponentu COM. Generování manifestu se provádí během procesu publikování ClickOnce; Další informace naleznete v tématu Publikování aplikací ClickOnce. Tato funkce také umožňuje využívat starší komponenty, které jste vytvořili v dřívějších vývojových prostředích, jako je Visual Basic 6.0.
ClickOnce nasazuje komponenty modelu COM dvěma způsoby:
Pomocí bootstrapperu nasaďte COM komponenty, protože fungují na všech podporovaných platformách.
Použijte izolaci nativních komponent (označovanou také jako nasazení modelu COM bez registrace).
Příklad izolace a nasazení jednoduché COM komponenty
Aby bylo možné předvést nasazení komponenty MODELU COM bez registrace, tento příklad vytvoří aplikaci založenou na systému Windows v jazyce Visual Basic, která odkazuje na izolovanou nativní komponentu COM vytvořenou pomocí jazyka Visual Basic 6.0 a nasadí ji pomocí ClickOnce.
Nejprve budete muset vytvořit nativní komponentu MODELU COM:
Vytvoření nativní komponenty modelu COM
Pomocí jazyka Visual Basic 6.0 v nabídce Soubor klepněte na příkaz Nový a potom Na projektu.
V dialogovém okně Nový projekt vyberte uzel Visual Basic a zvolte projekt ActiveX DLL. Do pole Název zadejte
VB6Hello.Poznámka:
U modelu COM bez registrace jsou podporovány pouze typy projektů ActiveX DLL a ActiveX Control; Typy projektů ActiveX EXE a ActiveX Document nejsou podporovány.
V Průzkumníku řešení poklikejte na Class1.vb a otevřete textový editor.
V Class1.vb přidejte následující kód za vygenerovaný kód pro metodu
New:Public Sub SayHello() MsgBox "Message from the VB6Hello COM component" End SubSestavte komponentu. V nabídce Sestavení klikněte na Sestavit řešení.
Poznámka:
Registrace-free COM podporuje pouze knihovny DLL a typy projektů ovládacích prvků COM. S registrací bez COM nemůžete používat EXE soubory.
Teď můžete vytvořit aplikaci založenou na systému Windows a přidat do ní odkaz na komponentu COM.
Vytvoření aplikace založené na systému Windows pomocí COM komponenty
Pomocí jazyka Visual Basic v nabídce Soubor klikněte na Nový a potom na Projekt.
V dialogovém okně Nový projekt vyberte uzel Jazyka Visual Basic a vyberte Aplikaci systému Windows. Do pole Název zadejte
RegFreeComDemo.V Průzkumníku řešení kliknutím na tlačítko Zobrazit všechny soubory zobrazte odkazy na projekt.
Klikněte pravým tlačítkem myši na uzel Odkazy a v místní nabídce vyberte Přidat odkaz .
V dialogovém okně Přidat odkaz klikněte na kartu Procházet, přejděte na VB6Hello.dll a vyberte jej.
V seznamu odkazů se zobrazí odkaz VB6Hello .
Přejděte na panel nástrojů, vyberte ovládací prvek Tlačítko a přetáhněte ho do formuláře Form1 .
V okně Vlastnosti nastavte vlastnost Text tlačítka na Hello.
Poklikáním na tlačítko přidejte kód obslužné rutiny a do souboru kódu přidejte kód tak, aby obslužná rutina četla takto:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim VbObj As New VB6Hello.Class1 VbObj.SayHello() End SubAplikaci spusťte. V nabídce Ladění klepněte na tlačítko Spustit ladění.
Dále je potřeba ovládací prvek izolovat. Každá komponenta MODELU COM, kterou vaše aplikace používá, je ve vašem projektu reprezentována jako odkaz modelu COM. Tyto odkazy jsou viditelné v uzlu Odkazy v okně Průzkumníka řešení . (Všimněte si, že odkazy můžete přidat buď přímo pomocí příkazu Přidat odkaz v nabídce Projekt , nebo nepřímo přetažením ovládacího prvku ActiveX do formuláře.)
Následující kroky ukazují, jak izolovat komponentu COM a publikovat aktualizovanou aplikaci obsahující izolovaný ovládací prvek:
Chcete-li izolovat komponentu COM
V Průzkumníku řešení v uzlu Reference vyberte odkaz VB6Hello .
V okně Vlastnosti změňte hodnotu izolované vlastnosti z False na True.
V nabídce Sestavení klikněte na Sestavit řešení.
Když teď stisknete klávesu F5, aplikace funguje podle očekávání, ale teď běží v rámci modelu COM bez registrace. Pokud to chcete prokázat, zkuste zrušit registraci komponenty VB6Hello.dll a spustit RegFreeComDemo1.exe mimo integrované vývojové prostředí sady Visual Studio. Tentokrát, když na tlačítko kliknete, stále funguje. Pokud dočasně přejmenujete manifest aplikace, znovu se nezdaří.
Poznámka:
Simulaci chybějící COM komponenty můžete provést tak, že ji dočasně odregistrujete. Otevřete příkazový řádek, přejděte do systémové složky zadáním cd /d %windir%\system32a pak odregistrujte komponentu zadáním regsvr32 /u VB6Hello.dll. Můžete ho znovu zaregistrovat zadáním regsvr32 VB6Hello.dll.
Posledním krokem je publikování aplikace pomocí Technologie ClickOnce:
Chcete-li publikovat aktualizaci aplikace s izolovanou komponentou COM
V nabídce Sestavení klepněte na tlačítko Publikovat RegFreeComDemo.
Zobrazí se Průvodce publikováním.
V Průvodci publikováním zadejte umístění na disku místního počítače, kde můžete přistupovat k publikovaným souborům a zkoumat je.
Kliknutím na tlačítko Dokončit publikujete aplikaci.
Pokud prozkoumáte publikované soubory, všimněte si, že soubor sysmon.ocx je součástí. Ovládací prvek je zcela izolovaný pro tuto aplikaci, což znamená, že pokud má počítač koncového uživatele jinou aplikaci používající jinou verzi ovládacího prvku, nemůže narušovat tuto aplikaci.
Referenční nativní sestavení
Visual Studio podporuje odkazy na nativní sestavení jazyka Visual Basic 6.0 nebo C++; tyto odkazy se nazývají nativní odkazy. Pokud chcete zjistit, jestli je odkaz nativní, ověřte, zda je jeho vlastnost Typ souboru nastavena na Nativní nebo ActiveX.
Pokud chcete přidat nativní odkaz, použijte příkaz Přidat odkaz a přejděte do manifestu. Některé komponenty umístí manifest do knihovny DLL. V tomto případě můžete jednoduše zvolit samotnou knihovnu DLL a Visual Studio ji přidá jako nativní odkaz, pokud zjistí, že komponenta obsahuje vložený manifest. Visual Studio také automaticky zahrne všechny závislé soubory nebo sestavení uvedené v manifestu, pokud jsou ve stejné složce jako odkazovaná komponenta.
Izolace ovládacích prvků modelu COM usnadňuje nasazení komponent modelu COM, které ještě nemají manifesty. Pokud je však součást dodávána společně s manifestem, můžete přímo odkazovat na manifest. Ve skutečnosti byste měli vždy použít manifest poskytnutý autorem komponenty všude, kde je to možné, místo použití izolované vlastnosti.
Omezení nasazení komponent MODELU COM bez registrace
Model COM bez registrace poskytuje jasné výhody oproti tradičním technikám nasazení.
Ne každá komponenta je vhodnou variantou pro COM bez registrace. Komponenta není vhodná, pokud je splněna některá z následujících skutečností:
Komponenta je server mimo proces. Exe servery nejsou podporovány; Podporují se pouze knihovny DLL.
Komponenta je součástí operačního systému nebo je systémovou komponentou, například XML, komponentou prohlížeče nebo komponentami MDAC (Microsoft Data Access Components). Měli byste postupovat podle zásad redistribuce autora komponenty; obraťte se na dodavatele.
Součást je součástí aplikace, například Microsoft Office. Neměli byste se například pokoušet izolovat objektový model aplikace Microsoft Excel. Je součástí Office a dá se používat jenom na počítači s nainstalovaným úplným produktem Office.
Součást je určená k použití jako doplněk nebo modul snap-in, například doplněk Office nebo ovládací prvek ve webovém prohlížeči. Tyto komponenty obvykle vyžadují určitý druh registračního schématu definovaného hostitelským prostředím, které je nad rámec samotného manifestu.
Komponenta spravuje fyzické nebo virtuální zařízení pro systém, například ovladač tiskového spooleru.
Komponenta je redistribuovatelná pro přístup k datům. Datové aplikace obecně vyžadují, aby byl před jejich spuštěním nainstalován samostatný redistribuovatelný balíček pro Data Access. Neměli byste se pokoušet izolovat součásti, jako je například ovládací prvek Microsoft ADO Data Control, Microsoft OLE DB nebo Microsoft Data Access Components (MDAC). Místo toho, pokud vaše aplikace používá MDAC nebo SQL Server Express, měli byste je nastavit jako požadavky; Viz Postupy: Instalace předpokladů pomocí aplikace ClickOnce.
V některých případech může být pro vývojáře komponenty možné přepracovat ji pro COM bez registrace. Pokud to není možné, můžete aplikace, které na nich závisejí, vytvářet a publikovat prostřednictvím standardního registračního schématu pomocí bootstrapperu. Další informace naleznete v tématu Tvorba instalačních balíčků Bootstrapperu.
Komponentu COM lze izolovat pouze jednou pro každou aplikaci. Nemůžete například izolovat stejnou komponentu COM z dvou různých projektů knihovny tříd, které jsou součástí stejné aplikace. Výsledkem bude upozornění na sestavení a aplikace se nepodaří načíst za běhu. Aby se zabránilo tomuto problému, společnost Microsoft doporučuje, abyste zapouzdřili součásti modelu COM v jedné třídní knihovně.
Na vývojářově počítači je v několika scénářích vyžadována registrace COM, i když nasazení aplikace registraci nevyžaduje. Tato
Isolatedvlastnost vyžaduje, aby byla komponenta COM zaregistrovaná na počítači vývojáře, aby se během sestavení automaticky vygeneroval manifest. Během procesu sestavení nejsou k dispozici žádné možnosti zachytávání registrací, které by vyvolávaly automatickou registraci. V manifestu se také neprojeví žádné třídy, které nejsou explicitně definovány v knihovně typů. Při použití komponenty MODELU COM s již existujícím manifestem, jako je nativní odkaz, nemusí být komponenta zaregistrovaná v době vývoje. Registrace se ale vyžaduje, pokud je součástí ovládací prvek ActiveX a chcete ji zahrnout do panelu nástrojů a návrháře Windows Forms.