Importujte knihovnu typů jako sestavení

Note

Tento článek popisuje pokyny k interoperabilitě COM v .NET Framework, které využívají starší nástroje a modely nasazení, jako jsou Tlbimp.exe a primární sestavení pro interoperabilitu. Pro moderní .NET použijte generování zdrojového kódu pro COM nebo rozhraní API ComWrappers. Další informace naleznete v tématu Interoperabilita modelu COM.

Definice typů modelu COM se obvykle nacházejí v knihovně typů. Naproti tomu kompilátory kompatibilní se specifikací CLS vytvářejí metadata typu v sestavení. Dva zdroje informací o typu jsou poměrně odlišné. Toto téma popisuje techniky generování metadat z knihovny typů. Výsledné sestavení se nazývá sestavení pro interoperabilitu a informace o typech, které obsahuje, umožňují aplikacím .NET používat typy modelu COM.

Existují dva způsoby, jak zpřístupnit tento typ informací pro vaši aplikaci:

  • Použití sestavení interoperability pouze v době návrhu: Kompilátoru můžete dát pokyn, aby vložil informace o typu ze sestavení zprostředkovatele komunikace do spustitelného souboru. Kompilátor vloží pouze informace o typu, které vaše aplikace používá. Není nutné nasazovat sestavení vzájemné spolupráce s vaší aplikací. Toto je doporučená technika.

  • Nasazování interop sestavení: Můžete vytvořit standardní odkaz na interop sestavení. V takovém případě musí být sestavení vzájemné spolupráce nasazeno s vaší aplikací. Pokud tuto techniku používáte a nepoužíváte privátní komponentu COM, vždy odkazujte na primární sestavení vzájemné spolupráce (PIA) publikované autorem komponenty COM, kterou chcete začlenit do spravovaného kódu. Další informace o vytváření a používání primárních sestavení vzájemné spolupráce naleznete v tématu Primární sestavení vzájemné spolupráce.

Pokud používáte sestavení interoperability pouze pro návrhový čas, můžete vložit informace o typu z primárního sestavení interoperability publikovaného autorem komponenty COM. Není však nutné nasazovat primární interop sestavení spolu s vaší aplikací.

Použití sestavení pro interoperabilitu určených pouze pro dobu návrhu snižuje velikost vaší aplikace, protože většina aplikací nepoužívá všechny funkce komponenty COM. Kompilátor je velmi efektivní při vkládání informací o typu; Pokud vaše aplikace používá pouze některé z metod v rozhraní modelu COM, kompilátor nevloží nepoužívané metody. Pokud aplikace, která obsahuje vložené informace o typu, komunikuje s jinou takovou aplikací nebo komunikuje s aplikací, která používá primární sestavení vzájemné spolupráce, používá modul CLR pravidla ekvivalence typů k určení, zda dva typy se stejným názvem představují stejný typ modelu COM. Abyste mohli používat objekty COM, nemusíte tato pravidla znát. Pokud vás ale zajímají pravidla, podívejte se na Ekvivalence typů a Vložené typy interoperability.

Generování metadat

Knihovny typů modelu COM mohou být samostatné soubory, které mají příponu .tlb, například Loanlib.tlb. Některé knihovny typů jsou vloženy do oddílu prostředků souboru .dll nebo .exe. Další zdroje informací o knihovně typů jsou soubory .olb a .ocx.

Po vyhledání knihovny typů, která obsahuje implementaci cílového typu COM, máte následující možnosti pro generování interoperačního sestavení, které obsahuje metadata typu:

  • Visual Studio

    Visual Studio automaticky převádí typy COM v knihovně typů na metadata v sestavení. Pokyny najdete v tématu Přidání odkazů na knihovny typů.

  • Import knihovny typů (Tlbimp.exe)

    Nástroj Type Library Importer nabízí možnosti příkazového řádku pro úpravu metadat ve výsledném interoperačním souboru, importuje typy z existující knihovny typů a generuje interoperační sestavení a obor názvů. Pokyny najdete v tématu Generování sestavení vzájemné spolupráce z knihoven typů.

  • Třída System.Runtime.InteropServices.TypeLibConverter

    Tato třída poskytuje metody pro převod coclasses a rozhraní v knihovně typů na metadata v rámci sestavení. Vytvoří stejný výstup metadat jako Tlbimp.exe. Na rozdíl od Tlbimp.exeTypeLibConverter však třída může převést knihovnu typů v paměti na metadata.

  • Vlastní obálky

    Pokud knihovna typů není k dispozici nebo není správná, je jednou z možností vytvoření duplicitní definice třídy nebo rozhraní ve spravovaném zdrojovém kódu. Zdrojový kód pak zkompilujete pomocí kompilátoru, který cílí na modul runtime, aby vytvořil metadata v rámci sestavení.

    Pokud chcete definovat typy modelu COM ručně, musíte mít přístup k následujícím položkám:

    • Přesné popisy třídy komponent a rozhraní, které jsou definovány.

    • Kompilátor, například kompilátor jazyka C#, který může vygenerovat příslušné definice .NET třídy.

    • Znalost pravidel převodu typu library-to-assembly

    Psaní vlastní obálky je pokročilá technika. Další informace o tom, jak vygenerovat vlastní obálku, naleznete v tématu Přizpůsobení standardní obálky.

Další informace o procesu importu zprostředkování COM naleznete v tématu Souhrn převodu knihovny typů na sestavení.

Viz také