Импорт библиотеки типов в виде сборки

Определения COM-типов обычно хранятся в библиотеке типов. С другой стороны, CLS-совместимые компиляторы создают в сборке метаданные типов. Эти два источника сведений о типе заметно отличаются. В этом разделе описываются способы создания метаданных из библиотеки типов. Полученная сборка называется сборкой взаимодействия, и содержащаяся в ней информация о типах позволяет приложениям платформы .NET Framework использовать типы COM.

Есть два способа предоставить приложению эту информацию о типах:

  • С использованием сборок взаимодействия только на этапе проектирования: начиная с платформы .NET Framework 4, можно указать компилятору, что в исполняемый файл следует внедрить информацию о типах из сборки взаимодействия. Компилятор встраивает информацию только о типах, используемых приложением. Развертывать сборку взаимодействия вместе с приложением не требуется. Это рекомендуемая методика.

  • Путем развертывания сборок взаимодействия: можно создать стандартную ссылку на сборку взаимодействия. В данном случае сборку взаимодействия следует развернуть вместе с приложением. Если применяется данный метод и не используется частный COM-компонент, необходимо во всех случаях ссылаться на основную сборку взаимодействия, опубликованную автором COM-компонента, который планируется интегрировать в управляемый код. Дополнительные сведения о создании и использовании основных сборок взаимодействия см. в разделе Основные сборки взаимодействия.

При использовании сборок взаимодействия только во время проектирования можно встраивать информацию о типах из основной сборки взаимодействия, опубликованной автором COM-компонента. Развертывать основную сборку взаимодействия вместе с приложением при этом не требуется.

Использование сборок взаимодействия только во время проектирования сокращает размер приложения, поскольку большинство приложений используют лишь некоторые функции компонентов COM. Компилятор весьма эффективно внедряет информацию о типах: если приложение использует лишь некоторые методы интерфейса COM, то компилятор не будет встраивать неиспользуемые методы. Если приложение со внедренной информацией о типах взаимодействует с другим аналогичным приложением или приложением, использующим основную сборку взаимодействия, то среда CLR использует правила эквивалентности типов, чтобы определить, представляют ли одноименные типы один и тот же тип COM. Необязательно знать эти правила, чтобы использовать объекты COM. Тем не менее, сведения о них можно найти в разделе Эквивалентность типов и внедренные типы взаимодействия.

Создание метаданных

Библиотеки COM-типов могут быть автономными TLB-файлами, например Loanlib.tlb. Некоторые библиотеки типов встроены в раздел ресурсов файла DLL или EXE. Другими источниками данных библиотек типов являются файлы OLB и OCX.

После обнаружения библиотеки типов, содержащей реализацию искомого COM-типа, для создания сборки взаимодействия, содержащей метаданные типа, разработчик может выбрать нужный из нескольких вариантов.

  • Visual Studio

    Visual Studio автоматически преобразует COM-типы библиотеки типов в метаданные сборки. Инструкции см. в разделах Практическое руководство. Добавление ссылок на библиотеки типов и Пошаговое руководство. Внедрение данных о типе из сборок для приложений Microsoft Office (C# и Visual Basic).

  • Программа экспорта библиотек типов (Tlbexp.exe)

    Программа экспорта библиотек типов предоставляет параметры командной строки для настройки метаданных в результирующем файле взаимодействия, импортирует типы из существующей библиотеки типов и создает сборку взаимодействия и пространство имен. Инструкции см. в разделе Практическое руководство. Создание сборок взаимодействия их библиотек типов.

  • Класс System.Runtime.InteropServices.TypeLibConverter

    Этот класс предоставляет методы для преобразования компонентных классов и интерфейсов из библиотеки типов в метаданные внутри сборки. При этом создаются те же метаданные, что и в программе Tlbimp.exe. Однако же в отличие от Tlbimp.exe класс TypeLibConverter может преобразовать в метаданные библиотеку типов, находящуюся в памяти.

  • Настраиваемые оболочки

    Если библиотека типов недоступна или является неверной, единственный выход — создать в управляемом исходном коде дубликат определения класса или интерфейса. После этого нужно скомпилировать исходный код с помощью компилятора, который обращается к среде выполнения, чтобы создать метаданные в сборке.

    Чтобы определить COM-типы вручную, необходим доступ к следующим элементам:

    • точные описания определяемых компонентных классов и интерфейсов;

    • компилятор, например, компилятор C#, который может создавать соответствующие определения классов .NET Framework;

    • сведения о правилах преобразования библиотек типов в сборки.

    Создание настраиваемой оболочки — это сложная процедура. Дополнительные сведения о создании настраиваемых оболочек см. в разделе Настройка стандартных оболочек.

Дополнительные сведения о процессе импорта COM-взаимодействия см. в разделе Общие сведения о преобразовании библиотеки типов в сборку.

См. также

Задачи

Практическое руководство. Добавление ссылок на библиотеки типов

Практическое руководство. Создание сборок взаимодействия их библиотек типов

Пошаговое руководство. Внедрение данных о типе из сборок для приложений Microsoft Office (C# и Visual Basic)

Ссылки

Tlbimp.exe (программа экспорта библиотек типов)

TypeLibConverter

Основные понятия

Предоставление клиентам .NET Framework доступа к COM-компонентам

Настройка стандартных оболочек

Использование COM-типов в управляемом коде

Компиляция проекта, использующего взаимодействие

Развертывание приложения взаимодействия

Другие ресурсы

Обзор преобразования библиотеки типов в сборку