2009-08-20 8 views
1

Ok, cette ligne de code:Interop.MSXML2 jetant des exceptions parce que ce n'est pas inscrit mais il ne s'inscrire pas!

XMLHTTP40 http = new XMLHTTP40(); 

Lance une System.Runtime.InteropServices.COMException et se plaint que:

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

J'ai googlé et je suppose que la DLL doit être enregistré parce que son DLL COM. Très bien, mais lorsque je tente de l'enregistrer je reçois cette erreur:

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

Apparemment, cela travaille sur une autre boîte de gars (il a écrit le code, alors oui ..: P). Cet objet COM n'apparaît pas dans ma liste de références COM disponibles, donc je référence simplement la DLL qui se trouve dans le répertoire bin \ Debug du projet. Lorsque j'ajoute la référence à cette DLL à mon projet, j'ai accès à tous les symboles dans VisualStudio. Je me demande, est-ce qu'il y a quelque chose que je peux installer pour enregistrer la DLL et l'afficher dans ma liste d'objets COM que je peux référencer? J'ai installé ce que je pensais être la bibliothèque MSXML 4.0 mais quand j'ai regardé dans le répertoire il n'y avait rien là dedans.

Des idées?

Répondre

5

MSXML4 doit être installé sur votre ordinateur pour qu'il fonctionne. La DLL d'interopérabilité ne contient aucun code d'exécution, cela aide seulement .NET à communiquer avec MSXML4.

Cependant, pourquoi n'utiliseriez-vous pas l'espace de noms System.Xml au lieu d'utiliser un composant COM?

0

Vous devez enregistrer (regsvr32) msxml4.dll, pas l'assembly interop. msxml4.dll est le serveur COM.

+0

Techniquement, c'est la bonne réponse. Le problème est que cela devrait déjà être enregistré et le problème que j'éprouvais était d'essayer d'enregistrer une DLL Interop qui est compilée pour s'interfacer avec la DLL COM. Cependant, je viens de réécrire mon interface en utilisant 'System.XML' et maintenant je n'ai plus à faire avec COM. Merci. – DJTripleThreat

Questions connexes