2009-08-20 14 views
1

Ok, diese Codezeile:Interop.MSXML2 wirft Ausnahmen, weil es nicht registriert ist, aber es ist nicht zu registrieren!

XMLHTTP40 http = new XMLHTTP40(); 

Wirft eine System.Runtime.InteropServices.COMException und beschwert sich, dass:

Retrieving the COM class factory for component with CLSID {88D969C5-F192-11D4-A65F-0040963251E5} failed due to the following error: 80040154.

Ich habe das gegoogelt und ich denke, die DLL, weil seine DLL ein COM registriert werden muss. Das ist in Ordnung, aber wenn ich versuche, es zu registrieren ich diesen Fehler:

C:\some\directory\path\etc\Interop.MSXML2.dll was loaded, but the DllRegisterServer entry point was not found.
This file can not be registered.

Offenbar wird dies auf einem anderen Jungs Box arbeitet (er schrieb den Code, so yeah ..: P). Dieses COM-Objekt wird nicht in meiner Liste verfügbarer COM-Verweise angezeigt, so dass ich nur auf die DLL referenziere, die sich im Verzeichnis bin \ Debug des Projekts befindet. Wenn ich den Verweis auf diese DLL zu meinem Projekt hinzufüge, erhalte ich Zugriff auf alle Symbole in VisualStudio. Ich frage mich, gibt es etwas, das ich installieren kann, das die DLL registrieren würde und es in meiner Liste der COM-Objekte anzeigen, die ich verweisen kann? Ich installierte, was ich dachte, war die MSXML 4.0-Bibliothek, aber als ich in das Verzeichnis sah, war dort nichts drin.

Irgendwelche Ideen?

Antwort

5

Sie müssen tatsächlich MSXML4 auf Ihrer Box installiert haben, damit es funktioniert. Die Interop-DLL enthält keinen Laufzeitcode und hilft nur .NET mit MSXML4 zu kommunizieren.

Warum aber würden Sie nicht den System.Xml-Namespace anstelle einer COM-Komponente verwenden?

0

Sie müssen registrieren (regsvr32) msxml4.dll, nicht die Interop-Assembly. msxml4.dll ist der COM-Server.

+0

Dies ist technisch die richtige Antwort. Das Problem ist, dass dies bereits registriert sein sollte und das Problem, das ich hatte, versuchte, eine Interop-DLL zu registrieren, die kompiliert wird, um mit der COM-DLL zu interagieren. Jedoch habe ich nur meine Schnittstelle mit 'System.XML' umgeschrieben und jetzt muss ich mich nicht mehr mit COM befassen. Vielen Dank. – DJTripleThreat

Verwandte Themen