использовать две разные версии одного и того же элемента управления (dll) одновременно на одном компьютере?

StackOverflow https://stackoverflow.com/questions/1578109

  •  21-09-2019
  •  | 
  •  

Вопрос

Я использую сторонний компонент в своем проекте и недавно обновился до последней версии, в которой исправлена ​​ошибка «А».

к сожалению, хотя он и исправил ошибку «А», другая часть стала совершенно нестабильной, поэтому в ней появилась ошибка «Б».

Поскольку «A» и «B» находятся в совершенно разных контекстах, я хочу установить обе версии элемента управления и использовать одну в одном случае, когда ошибка «B» не имеет значения, а другую — в случае, когда ошибка « А' не имеет значения.

конечно, все до тех пор, пока сторонний разработчик не выпустит правильное исправление.

Кто-нибудь думает, как это можно сделать?

р

п.с.dll необходимо зарегистрировать с помощью regsvr32...Я подозреваю, что это тот момент, когда его можно найти...Я надеюсь, что с помощью некоторой хитрости именно здесь мы сможем зарегистрировать двойник под другим именем.

Это было полезно?

Решение

Вы можете развернуть разные версии COM-компонента и использовать их без регистрации.Эта функция COM без регистрации появилась в Windows XP и требует развертывания файла .manifest с соответствующими настройками.

Посмотри на Активация COM-компонентов без регистрации и Побег из DLL-ада:Упрощение развертывания приложений с помощью ClickOnce и COM без регистрации.

Другие советы

Вы можете зарегистрировать на своем компьютере только одну COM-dll одного и того же типа...вот почему GAC представлен .Net

Если сторонний компонент является COM-компонентом, то вы на правильном пути: вам необходимо зарегистрировать его дважды, используя разные имена/Guid.

РЕДАКТИРОВАТЬ:см. ответ Divo о множественной регистрации COM...После XP вы можете сделать это сейчас...
Но до этого единственным способом сделать это (если не считать наличия исходного кода и самостоятельной перекомпиляции новой dll с другими руководствами по регистрации) было вручную изменить библиотеку типов и заменить существующие руководства новыми.Это было бы крайне сложно.(Возможно, существует инструмент для этого, но если он есть, я о нем не знаю) Библиотека типов, кстати, может быть встроена в саму dll или находиться в отдельном файле *.tlb (общий для компонентов VB6)

Если, конечно, компонент является компонентом управляемого кода, то реестр может быть необходим только для интеграции в Visual Studio, и достаточно будет просто скопировать dll в папку приложения для исполняемого файла, в котором вы его используете...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top