Import knihovny typů ve formě sestavení

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í vzájemné spolupráce a informace o typu, které obsahuje, umožňují aplikacím rozhraní .NET Framework používat typy modelu COM.

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

  • Pomocí sestavení interoperability jen pro návrh: Počínaje rozhraním .NET Framework 4 můžete kompilátoru dát pokyn, aby vložil informace o typu z 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ý postup.

  • Nasazení sestavení vzájemné spolupráce: Můžete vytvořit standardní odkaz na sestavení vzájemné spolupráce. 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 s časovým návrhem, můžete vložit informace o typu z primárního sestavení vzájemné spolupráce publikované autorem komponenty COM. Není však nutné nasazovat primární sestavení vzájemné spolupráce s vaší aplikací.

Použití sestavení interoperability pouze v době návrhu snižuje velikost aplikace, protože většina aplikací nepoužívá všechny funkce komponenty MODELU 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 typy ekvivalence typů a vložené typy vzájemné spolupráce.

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 části 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 MODELU COM, máte následující možnosti pro generování sestavení vzájemné spolupráce obsahující metadata typu:

  • Visual Studio

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

  • Import knihovny typů (Tlbimp.exe)

    Nástroj Type Library Importer poskytuje možnosti příkazového řádku pro úpravu metadat ve výsledném souboru spolupráce, importování typů z existující knihovny typů a vygenerování sestavení vzájemné spolupráce a oboru názvů. Pokyny najdete v tématu Postupy: 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.exe TypeLibConverter 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 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 klasifikací a rozhraní, která jsou definována.

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

    • 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ředkovatele komunikace modelu COM naleznete v tématu Knihovna typů do souhrnu převodu sestavení.

Viz také