2009-05-20 5 views
0

私はASP.NET MVCアプリケーションでHTMLを解析するためにmshtmlを使用しています。 VS2008 Professionalがインストールされている開発マシンでうまく動作します。 VS Express 2008/WebDevがインストールされているステージングマシンでうまく動作します。ただし、Visual StudioのバージョンがないプロダクションサーバーでCOMオブジェクトを読み込もうとすると、FileNotFoundExceptionがスローされます。Visual StudioがインストールされていないマシンでMSHTMLを使用するにはどうすればよいですか?

Exception type: FileNotFoundException 
    Exception message: Could not load file or assembly 

'Microsoft.mshtml、バージョン= 7.0.3300.0、 文化=中立、 なPublicKeyToken = b03f5f7f11d50a3a' またはその依存関係の 1。システム は、指定されたファイルを見つけることができません。

プロダクションボックスにVisual Studioをインストールしたくありません。私はsuggestionを読んで、C:\ Program files \ Common Files \ Merge modules \ vs_piaredist.exeがこの問題を解決していますが、このディレクトリは私のプロダクションボックスに存在しません。本番マシンでmshtmlを使用するにはどうすればよいですか?

+0

vs_piaredist.exeはステージングマシンまたはdevマシンには存在しませんが、devマシンにvs90_piaredistというファイルがあります。 –

答えて

1

devマシンからvs90_piaredistを使用することが解決策のようです。 interopアセンブリはMicrosoft.mshtml.dllと呼ばれ、C:\ Program Files \ Microsoft.NET \ Primary Interopアセンブリに存在します。 vs90_piaredistを実行すると、このディレクトリが本番マシン上に作成され、Microsoft.mshtml.dllを含む5つのinterop dllがそこに配置されました。

このthreadには、この問題に関するいくつかの良い議論がありました。

0

IEはmshtmlに依存しませんか?どのバージョンのIEがプロダクションボックスにインストールされていますか? atleast 6にアップグレードすることを検討してください

+0

IE7。 mshtml.dllはsystem32ディレクトリにありますが、何らかの理由でアプリケーションはそれを見ることができません。 –

0

IEは管理されていないコードなので、管理対象から非管理対象に移行するにはinteropレイヤが必要です。 Primary Interop Assembly(PIA)は、通常、ベンダーによって出荷されるものです。これがpiaredist.exeを実行するように提案されている理由です。

関連する問題