Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Определения типов COM обычно находятся в библиотеке типов. Напротив, компиляторы, соответствующие CLS, генерируют метаданные типов в сборке. Два источника сведений о типе совершенно разные. В этом разделе описываются методы создания метаданных из библиотеки типов. Результирующая сборка называется interop сборкой, а сведения о типах, содержащиеся в ней, позволяют приложениям .NET Framework использовать типы COM.
Существует два способа сделать эту информацию типа доступной для приложения:
С использованием сборок взаимодействия исключительно во время проектирования: начиная с .NET Framework 4, можно инструктировать компилятор внедрять сведения о типе из сборки взаимодействия в ваш исполняемый файл. Компилятор внедряет только информацию о типах, которые использует ваше приложение. Вам не нужно развертывать сборку для взаимодействия с приложением. Это рекомендуемый метод.
Развертывание сборок interop: Вы можете создать стандартную ссылку на interop-сборку. В этом случае сборка взаимодействия должна быть развернута непосредственно с вашим приложением. Если вы применяете этот метод и не используете приватный COM-компонент, всегда ссылайтесь на основную сборку взаимодействия (Primary Interop Assembly, PIA), опубликованную автором COM-компонента, который вы планируете включить в управляемый код. Дополнительные сведения о создании и использовании основных сборок взаимодействия см. в разделе "Основные сборки взаимодействия".
При использовании сборок взаимодействия во время разработки можно внедрить сведения о типе из основной сборки взаимодействия, опубликованной автором COM-компонента. Однако вам не нужно развертывать главную сборку взаимодействия вместе с приложением.
Использование сборок взаимодействия, предназначенных только для проектирования, сокращает размер приложения, потому что большинство приложений не используют все возможности COM-компонента. Компилятор очень эффективен при внедрении сведений о типе; Если приложение использует только некоторые методы в com-интерфейсе, компилятор не внедряет неиспользуемые методы. Если приложение, включающее сведения о внедренном типе, взаимодействует с другим таким приложением или с приложением, использующим основную сборку взаимодействия, то среда CLR использует правила эквивалентности типов, чтобы определить, представляют ли два типа с одинаковым именем один и тот же тип COM. Эти правила не нужно знать, чтобы использовать COM-объекты. Однако если вы заинтересованы в правилах, см. раздел "Эквивалентность типов" и "Внедренные типы взаимодействия".
Создание метаданных
Библиотеки типов COM могут быть автономными файлами с расширением TLB, например Loanlib.tlb. Некоторые библиотеки типов внедрены в раздел ресурсов файла .dll или .exe. Другими источниками сведений о библиотеке типов являются файлы .olb и .ocx.
После того как вы найдете библиотеку типов, содержащую реализацию целевого COM-типа, вы можете использовать следующие параметры для создания сборки взаимодействия для межоперабельности, включающей метаданные типа.
Визуальная студия
Visual Studio автоматически преобразует типы COM из библиотеки типов в метаданные в составе сборки. Инструкции см. в разделе "Практическое руководство. Добавление ссылок на библиотеки типов".
Средство импорта библиотек типов (Tlbimp.exe)
Средство импорта библиотек типов предоставляет параметры командной строки для настройки метаданных в результирующем файле взаимодействия, импортирует типы из существующей библиотеки типов и создает сборку взаимодействия и пространство имен. Инструкции см. в разделе "Практическое руководство. Создание сборок взаимодействия из библиотек типов".
Класс System.Runtime.InteropServices.TypeLibConverter
Этот класс предоставляет методы для преобразования соклассов и интерфейсов в библиотеку типов в метаданные в сборке. Он создает те же метаданные на выходе, что и Tlbimp.exe. Однако, в отличие от Tlbimp.exe, TypeLibConverter класс может преобразовать библиотеку типов в память в метаданные.
Пользовательские оболочки
Если библиотека типов недоступна или неправильная, один из вариантов — создать повторяющееся определение класса или интерфейса в управляемом исходном коде. Затем вы компилируете исходный код с компилятором, нацеленным на среду выполнения, чтобы создать метаданные в сборке.
Чтобы определить типы COM вручную, необходимо иметь доступ к следующим элементам:
Точные описания определяемых coclasses и интерфейсов.
Компилятор, например компилятор C#, который может создать соответствующие определения классов .NET Framework.
Знание правил преобразования библиотеки типов в сборочное представление.
Написание пользовательской оболочки — это продвинутый метод. Дополнительные сведения о создании пользовательской оболочки см. в разделе "Настройка стандартных оболочков".
Дополнительные сведения о процессе импорта COM interop см. в сводке по преобразованию библиотеки типов в сборку.
См. также
- TypeLibConverter
- Предоставление com-компонентов платформе .NET Framework
- Сводка о преобразовании библиотеки типов в сборку
- Tlbimp.exe (импорт библиотеки типов)
- Настройка стандартных оболочек
- Использование типов COM в управляемом коде
- Компиляция проекта Interop
- Развертывание приложения интероперабельности
- Практическое руководство. Добавление ссылок на библиотеки типов
- Практическое руководство. Создание сборок взаимодействия из библиотек типов