Практическое руководство: регистрация основных сборок взаимодействия

Note

Это руководство предназначено для .NET Framework. Для современного COM-взаимодействия в .NET используйте COM-взаимодействие с генерацией исходного кода или API System.Runtime.InteropServices.ComWrappers. Дополнительные сведения см. в разделе Общие сведения о взаимодействии с COM и Генерация исходного кода COM.

Классы могут быть маршалированы только посредством COM-взаимодействия и всегда маршалируются как интерфейсы. Иногда интерфейс, используемый для маршалинга класса, называют интерфейсом класса. Сведения о переопределении интерфейса класса интерфейсом по вашему выбору см. в разделе Вызываемая оболочка COM.

Хотя любой разработчик, который хочет использовать типы COM из приложения .NET Framework, может создать сборку взаимодействия, это создает проблему. Каждый раз, когда разработчик импортирует и подписывает библиотеку типов COM, он создает набор уникальных типов, которые несовместимы с типами, импортированными и подписанными другим разработчиком. Чтобы решить эту проблему несовместимости, каждый разработчик должен получить предоставляемую поставщиком и подписанную основную сборку взаимодействия.

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

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

Вам необходимо зарегистрировать все полученные основные сборки взаимодействия на своем компьютере, прежде чем вы сможете ссылаться на них в Visual Studio. Visual Studio ищет основную сборку взаимодействия и использует ее при первой ссылке на тип из библиотеки типов COM. Если Visual Studio не удается найти основную сборку-прослойку взаимодействия, связанную с библиотекой типов, она предлагает вам получить ее или вместо этого создать сборку-прослойку взаимодействия. Аналогичным образом, средство импорта библиотек типов (Tlbimp.exe) также использует реестр для поиска основных сборок межоперационного взаимодействия.

Хотя регистрировать основные сборки взаимодействия необязательно, если только вы не планируете использовать Visual Studio, регистрация дает два преимущества:

  • Зарегистрированная основная сборка взаимодействия имеет явную отметку в разделе реестра, соответствующем исходной библиотеке типов. Регистрация — наилучший способ обнаружения основной сборки взаимодействия на компьютере.
  • Вы можете избежать случайного создания и использования новой сборки взаимодействия, если в какой-то момент в будущем всё же будете использовать Visual Studio, чтобы добавить ссылку на тип, для которого у вас есть незарегистрированная основная сборка взаимодействия.

Используйте средство регистрации сборки (Regasm.exe) для регистрации основной сборки взаимодействия.

Зарегистрировать основную сборку взаимодействия

Чтобы зарегистрировать основную сборку взаимодействия, в командной строке введите:

regasm <assemblyname>

В этой команде имя_сборки — это имя файла регистрируемой сборки. Программа Regasm.exe добавляет запись об основной сборке взаимодействия в тот же раздел реестра, что и для исходной библиотеки типов.

Пример

В примере ниже регистрируется основная сборка взаимодействия CompanyA.UtilLib.dll.

regasm CompanyA.UtilLib.dll

См. также