Как отлаживать реестр свободного COM? - PullRequest
0 голосов
/ 04 июля 2011

У меня запутанная ситуация, когда я оборачиваюсь парой сторонних компонентов COM.На самом деле это один компонент COM и несколько сборок .NET.Сборки .NET, в свою очередь, зависят от внутреннего компонента COM того же стороннего производителя.Когда я зарегистрировал COM DLL, мой код работает нормально (сейчас я тестирую из C #).Когда я не, это терпит неудачу.Как лучше всего это отладить?

Я сгенерировал манифест SxS, добавив ссылку на компоненты COM, установив Isolated = true, а затем извлекая результирующие элементы comClass из манифеста в свой собственный манифест SxS.Кроме того, создается впечатление, что создается файл Interop.XXX.dll: для чего он нужен?

Некоторые сообщения об ошибках в качестве примера:

"Retrieving the COM class factory for component with CLSID {012A4BEB-99EC-4A65-A4AF-7D09A20B5034} failed due to the following error: 80040154."

"HSREADWRITELib::ReadWriteData, CreateInstance"

1 Ответ

2 голосов
/ 04 июля 2011

Это самая основная ошибка, которую вы можете получить с помощью reg-free COM, он не использует манифест или манифест неверен. Убедитесь, что в вашем манифесте есть элемент <file>, который называется COM DLL и содержит элемент <comClass> с атрибутом "clsid", который имеет тот же guid, что и тот, на который жалуется сообщение об исключении.

Затем убедитесь, что манифест встроен в исполняемый файл клиента . Вы можете увидеть это с помощью File + Open + File в Visual Studio, откройте узел RT_MANIFEST.

...