Interop.MSXML2 выбрасывает исключения, потому что он не зарегистрирован, НО НЕ БУДЕТ РЕГИСТРАЦИЯ! - PullRequest
1 голос
/ 20 августа 2009

Хорошо, эта строка кода:

XMLHTTP40 http = new XMLHTTP40();

Бросает System.Runtime.InteropServices.COMException и жалуется, что:

Получение фабрики классов COM для компонента с CLSID {88D969C5-F192-11D4-A65F-0040963251E5} не удалось из-за следующей ошибки: 80040154.

Я гуглил это и думаю, что DLL нужно зарегистрировать, потому что это COM DLL. Это нормально, но когда я пытаюсь зарегистрировать его, я получаю эту ошибку:

C: \ some \ directory \ path \ etc \ Interop.MSXML2.dll был загружен, но точка входа DllRegisterServer не найдена.
Этот файл не может быть зарегистрирован.

Видимо, это работает на другом ящике с парнями (он написал код, так что да ..: P). Этот COM-объект не отображается в моем списке доступных COM-ссылок, поэтому я просто ссылаюсь на DLL, которая находится в каталоге bin \ Debug проекта. Когда я добавляю ссылку на эту DLL в свой проект, я получаю доступ ко всем символам в VisualStudio. Мне интересно, есть ли что-то, что я могу установить, чтобы зарегистрировать DLL и показать ее в моем списке COM-объектов, на которые я могу ссылаться? Я установил то, что считал библиотекой MSXML 4.0, но когда я посмотрел в каталоге, там ничего не было.

Есть идеи?

Ответы [ 2 ]

5 голосов
/ 20 августа 2009

Для того, чтобы он работал, на вашем компьютере должен быть установлен MSXML4. Интерфейс DLL не содержит кода времени выполнения, он только помогает .NET общаться с MSXML4.

Однако, почему бы вам не использовать пространство имен System.Xml вместо использования компонента COM?

0 голосов
/ 20 августа 2009

Вам нужно зарегистрировать (regsvr32) msxml4.dll, а не сборку взаимодействия. msxml4.dll является COM-сервером.

...