Я создал строго подписанную сборку в Visual Studio 2008 против .NET 3.5 framework (я также пробовал 2.0 framework). Я выставил класс как видимый COM, и я могу найти эту DLL в браузере объектов Visual Studio 6 для Visual Basic. Я могу создать exe-файл в VB6 и запустить его непосредственно из Windows Explorer, и все работает отлично. Однако, когда я пытаюсь запустить проект VB6 в Visual Studio 6, сборка .net не хочет загружаться и завершается со следующей ошибкой:
ActiveX component can't create object
Я также получаю эту ошибку вместо описанной выше, в зависимости от того, как я регистрирую dll:
-2147024894 File or assembly name (myComponentName), or one of its dependencies, was not found.
Или это:
-2146233082 Automation error
Я перепробовал все, что мог придумать. Похоже, это было бы проблемой с тем, как VS6 работает в режиме отладки. Может быть, среда отличается с отсутствующим путем к той или иной DLL. У меня есть эта проблема на двух разных машинах разработки. Я также могу сослаться на COM .net DLL, созданную другим разработчиком, использующим старую версию Visual Studio .net. Я даже открыл dll с помощью обходчика зависимостей и не получил никаких явных ошибок.
UPDATE:
Монитор Proc говорит, что VB6 ищет мою dll в домашнем каталоге vb6 studio "C: \ Program Files \ Microsoft Visual Studio \ VB98 \ MyDLL.DLL" вместо того, где зарегистрирована DLL. Я поместил dll там и зарегистрировал его, теперь я получаю новую ошибку:
-2146234105 (80131107) "The format of the file 'MyDllName' is invalid."
Итак, почему студия ищет мою DLL там, а не там, где она зарегистрирована? Как я могу это исправить? Как минимум, как я могу заставить dll работать в папке "C: \ Program Files \ Microsoft Visual Studio \ VB98 \"
Окончательное обновление / РЕШЕНИЕ:
Итак, я разобрался с проблемой. Это связано с тем, что VB6.exe заблокирован из используемой мной версии .net framework (2.0 или 3.5). Я нашел этот файл "C: \ Program Files \ Microsoft Visual Studio \ VB98 \ vb6.exe.config", который содержал следующую запись:
<configuration>
<startup>
<supportedRuntime version="v1.1.4322" />
</startup>
Как только я удалил этот файл, dll начала нормально работать из среды Visual Studio 6. Спасибо всем, кто откликнулся на помощь.