2016-07-25 3 views
-1

я не знаю, почему/когда это произойдет, но это сообщение об ошибке ошибок мне нравится каждый год:System.Runtime.InteropServices.COMException раз и снова

Исключение брошено: «System.Runtime.InteropServices.COMException» in mscorlib.dll

Дополнительная информация: Завод COM-класса для компонента с CLSID {C70F08F3-3F2A-477D-9F7A-B5463E973BDC} не может быть доступен по следующей причине: 80040154 Класс не зарегистрирован (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

Я не помню, как я решаю это каждый раз, когда это происходит. Я думаю, что я перекомпилирую компонент OCX, а затем добавлю его снова.

Однако это было бы странно, потому что я могу использовать компонент OCX в VB6. Почему это не должно быть доступно в .NET тогда?

Неужели кто-нибудь может объяснить, что здесь может быть?

спасибо.

ответ

1

Трудно догадаться без какого-либо вспомогательного кода в OP, но симптомы согласуются с OCX, изменив CLSID по какой-либо причине (например, из-за изменений интерфейса).

В этом случае:

  • перестроения OCX как правило, повторно регистрируется его в конце, так что правый класс зарегистрирован;

  • Повторное добавление ссылки на OCX обновляет ссылочный CLSID до нужного.

Что касается того, почему он работает в VB6, скорее всего, ссылка уже обновлена. Как именно это произошло, опять же трудно угадать, учитывая отсутствие деталей.

Смежные вопросы