2009-08-20 1 views
1

[OK]を、このコード行は:Interop.MSXML2は登録されていないために例外をスローしますが、登録は必要ありません!

XMLHTTP40 http = new XMLHTTP40(); 

System.Runtime.InteropServices.COMExceptionをスローして、それを文句:

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

私はそれをGoogleで検索していると私はDLLは、そのためのCOM DLLを登録する必要がありますね。それは大丈夫ですが、私はそれを登録しようとすると、私はこのエラーを取得する:

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

は、どうやらこれは、別の男ボックスに取り組んでいる(彼は...ええそう、コードを書いた:P)。このCOMオブジェクトは利用可能なCOM参照のリストには表示されないので、プロジェクトのbin \ DebugディレクトリにあるDLLを参照するだけです。このDLLへの参照をプロジェクトに追加すると、VisualStudioのすべてのシンボルにアクセスできます。私は、DLLを登録し、私が参照できるCOMオブジェクトの私のリストに表示されるように私がインストールできるものがあるのだろうかと疑問に思っていますか?私はMSXML 4.0ライブラリだと思ったものをインストールしましたが、ディレクトリを見てそこには何もありませんでした。

アイデア?

答えて

5

実際にMSXML4がインストールされている必要があります。 interop dllにはランタイムコードが含まれていないため、.NETでMSXML4との対話に役立ちます。

なぜ、COMコンポーネントを使用する代わりにSystem.Xml名前空間を使用しないのですか?

0

interopアセンブリではなく、(regsvr32)msxml4.dllを登録する必要があります。 msxml4.dllはCOMサーバーです。

+0

これは技術的に正解です。問題は、これが既に登録されていて、私が持っていた問題は、COM DLLとのインターフェイスにコンパイルされたInterop DLLを登録しようとしていたことです。しかし、私は 'System.XML'を使用してインターフェースを書き直しましたが、今はCOMにはまったく対処する必要がありません。ありがとう。 – DJTripleThreat

関連する問題