Импорт библиотеки типов в виде сборки
Определения COM-типов обычно хранятся в библиотеке типов. С другой стороны, CLS-совместимые компиляторы создают в сборке метаданные типов. Эти два источника сведений о типах заметно отличаются. В этом разделе описываются способы создания метаданных из библиотеки типов. Результирующая сборка и называется сборкой взаимодействия, а содержащиеся в ней сведения о типах позволяют приложениям .NET Framework использовать COM-типы.
Существует два способа, чтобы сделать эти сведения о типах доступными для приложения.
Используя сборки взаимодействия только во время разработки: начиная с платформа .NET Framework 4, компилятор может внедрить сведения о типе из сборки взаимодействия в исполняемый файл. Компилятор внедряет только сведения о типе, используемые приложением. Не требуется развертывать сборку взаимодействия с приложением. Рекомендуем использовать этот метод.
Развертывание сборок взаимодействия. Можно создать стандартную ссылку на сборку взаимодействия. В этом случае сборки взаимодействия должны быть развернуты вместе с приложением. Если вы применяете эту методику и не используете частный COM-компонент, всегда ссылайтесь на основную сборку взаимодействия (PIA), опубликованную автором COM-компонента, который планируется включить в управляемый код. Дополнительные сведения о создании и использовании основных сборок взаимодействия см. в разделе Основные сборки взаимодействия.
При использовании сборок взаимодействия только во время разработки можно внедрить сведения о типе из основной сборки взаимодействия, опубликованной автором COM-компонента. Однако не требуется развертывать основную сборку взаимодействия с приложением.
Использование сборок взаимодействия только во время разработки приводит к уменьшению размера приложения, так как большинство приложений используют не все функции COM-компонента. Компилятор очень эффективен при внедрении сведений о типе. Если приложение использует только некоторые методы в COM-интерфейсе, компилятор не внедряет неиспользуемые методы. Когда приложение, содержащее внедренные сведения о типах, взаимодействует с другим таким приложением или с приложением, использующим основную сборку взаимодействия, среда CLR применяет правила эквивалентности типов, чтобы определить, представляют ли два типа с одинаковым именем один и тот же COM-тип. Чтобы использовать COM-объекты, знать эти правила не требуется. Однако если вас интересуют правила, см. раздел Эквивалентность типов и внедренные типы взаимодействия.
Создание метаданных
Библиотеки COM-типов могут быть автономными файлами TLB, например Loanlib.tlb. Некоторые библиотеки типов встроены в раздел ресурсов файла DLL или EXE. Другими источниками данных библиотек типов являются файлы OLB и OCX.
После нахождения библиотеки типов, содержащей реализацию искомого COM-типа, для создания сборки взаимодействия, содержащей метаданные типа, разработчик может выбрать нужный из нескольких вариантов.
Visual Studio
Visual Studio 2005 автоматически преобразует COM-типы библиотеки типов в метаданные сборки. Инструкции см. в разделе "Практическое руководство. Добавление ссылок на библиотеки типов".
Программа импорта библиотек типов (Tlbimp.exe)
Программа экспорта библиотек типов предоставляет параметры командной строки для настройки метаданных в результирующем файле взаимодействия, импортирует типы из существующей библиотеки типов и создает сборку взаимодействия и пространство имен. Инструкции см. в разделе Практическое руководство. Создание сборок взаимодействия из библиотек типов.
Класс System.Runtime.InteropServices.TypeLibConverter
Этот класс предоставляет методы преобразования компонентных классов и интерфейсов в библиотеке типов в метаданные сборки. Он создает такие же выходные метаданные, что и программа Tlbimp.exe. Однако, в отличие от программы Tlbimp.exe, класс TypeLibConverter может преобразовать в метаданные библиотеку типов, находящуюся в памяти.
Настраиваемые оболочки
Если библиотека типов недоступна или является неверной, единственный выход — создать в управляемом исходном коде дубликат определения класса или интерфейса. После этого нужно скомпилировать исходный код с помощью компилятора, который обращается к среде выполнения, чтобы создать метаданные в сборке.
Чтобы определить COM-типы вручную, необходим доступ к следующим элементам:
точные описания определяемых компонентных классов и интерфейсов;
компилятор, например компилятор C#, который может создавать соответствующие определения классов .NET Framework;
ведения о правилах преобразования библиотек типов в сборки.
Написание настраиваемой оболочки — это сложная процедура. Дополнительные сведения о создании настраиваемой оболочки см. в разделе Настройка стандартных оболочек.
Дополнительные сведения процессе импорта COM-взаимодействия см. в разделе Обзор преобразования библиотек типов в сборки.
См. также
- TypeLibConverter
- Предоставление клиентам .NET Framework доступа к COM-компонентам
- Общие сведения о преобразовании библиотеки типов в сборку
- Tlbimp.exe (программа импорта библиотек типов)
- Customizing Standard Wrappers (Настройка стандартных оболочек)
- Using COM Types in Managed Code (Использование COM-типов в управляемом коде)
- Компиляция проекта, использующего взаимодействие
- Развертывание приложения взаимодействия
- Практическое руководство. Добавление ссылок на библиотеки типов
- Практическое руководство. Создание сборок взаимодействия их библиотек типов