Нужно ли заставлять GAC перезагрузить сборку? Это возможно? - PullRequest
0 голосов
/ 17 июня 2010

Я добавил типы в мои классы .NET, которые я использую для взаимодействия COM.Чтобы заставить его работать с моим приложением VB6, я отменил регистрацию DLL и перерегистрировал ее (используя regasm).Затем я удалил и переустановил его в GAC (используя gacutil).

Типы отображаются в обозревателе объектов VB6, но когда я запускаю приложение в IDE VB6, оно разрывается на строке, котораясоздает новые типы с ошибкой: Automation Errror - The System cannot find the file specified.

Я подумал, что это странно, так как я уже обновил GAC, поэтому я удалил dll из GAC и получил точно такую ​​же ошибкуЭто, по-видимому, указывает на то, что старая версия dll уже находится в памяти и должна быть «перезагружена», чтобы новая DLL находилась в памяти.Возможно ли это, и если да, что мне нужно делать?

Ответы [ 2 ]

1 голос
/ 17 июня 2010

Я подозреваю, что regasm.exe добавляет записи COM для ваших объектов и указывает их местоположение сборки до того, как это было сделано GAC.Обычно это не должно иметь значения, поскольку GAC победит во всех случаях.Но может быть различием для взаимодействия COM.

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

0 голосов
/ 17 июня 2010

Попробуйте сохранить проект VB6, закрыть IDE и заново открыть проект.Это сработало для меня в этой ситуации.

...