Развертывание службы .NET после обновления COM DLL - PullRequest
2 голосов
/ 10 февраля 2010

Я пытаюсь обновить DLL vb6 и повторно развернуть службу .NET, но получаю следующую ошибку:

System.Runtime.InteropServices.COMException (0x80040154): получение класса COM фабрика для компонента с CLSID {D01BF589-BC04-4119-8168-AE6180BBD021} не удалось из-за следующей ошибки: 80040154.

Шаги, которые я предпринимаю при развертывании, следующие:

  1. Компилировать VB6 COM DLL
  2. Регистрация COM dll на целевом компьютере
  3. Используйте tblimp для создания Interop DLL
  4. Добавить эту Interop DLL в проект .NET
  5. Перекомпилируйте проект и установщик
  6. Запустить установщик на целевом компьютере (на котором ранее не была установлена ​​служба)

Есть идеи?

Ответы [ 3 ]

1 голос
/ 10 февраля 2010

Код ошибки 0x80040154 переводится как REGDB_E_CLASSNOTREG, что означает «Класс не зарегистрирован», поэтому я предполагаю, что ваш класс не был зарегистрирован. Вы должны посмотреть в реестре HKEY_LOCAL_MACHINE \ CLSID и убедиться, что ваша регистрация не провалилась и что она действительно указывает на вашу dll.

0 голосов
/ 10 февраля 2010

У вас установлена ​​среда выполнения VB на целевом компьютере и связанные вспомогательные вспомогательные файлы? Вы запускали regsrvr32 на dll? Вы проверили с TypeLib, чтобы видеть, находится ли это в реестре на целевой машине?

Надеюсь, это поможет, С наилучшими пожеланиями, Том.

0 голосов
/ 10 февраля 2010

Возможно, вам не хватает других DLL, необходимых вашему COM-объекту на целевой машине. «listdlls» и «procxp» от sysinternals могут помочь определить, что отсутствует Также .NET может пытаться заставить его работать как 64-битное приложение. Может помочь запуск corflags с ключом / 32bit +.

...