64ビットマシンで32ビットアプリケーション(x86として構築)を実行しようとしています。私は32ビットのCOMオブジェクトを使用するため、x86として構築しました。私がこれを行うまで、アプリはcomを読み込めませんでした。今度はcomをロードしますが、microsoft.mshtmlアセンブリが見つからないと不平を言っています。このアセンブリは、(.net)依存関係の1つによって使用されます。64ビットマシンで実行中に32ビットアプリケーションがmshtmlアセンブリを見つけられない
エラーメッセージは次のとおりです。
System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.mshtml, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
Couldn't find File name: 'Microsoft.mshtml, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
私はCLSIDの下とWOW3264NodeCLSID下の両方に登録このアセンブリを参照することができます。ただし、WIndows \ Assemblyディレクトリにはありません。
私は、アプリケーションを構築したコンピュータからdllをコピーして、アプリケーションディレクトリに配置しようとしました。その後、私はアプリを実行しようとすると、私は強力な命名についてのセキュリティエラーが発生しました。私はエラーを見つけ、アセンブリをGACに追加する必要があることを発見しました。私は\windows\assembly
にdllをドラッグしてやろうとしましたが、これはうまくいきませんでした。プライベート\公開鍵についてのエラーメッセージが表示されました。
私は、バインディングログを有効にし、それは私が何を得るのです。
===事前バインド状態情報===
LOG: DisplayName = Microsoft.mshtml, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
(Fully-specified)
LOG: Appbase = file:///C:/DT/IEService/bin/Debug32bit/
LOG: Initial PrivatePath = NULL
Calling assembly : HTMLConverter, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6ec4c8772a0842ff.
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\DT\IEService\bin\Debug32bit\ServiceConsole.exe.Config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\machine.config.
LOG: Post-policy reference: Microsoft.mshtml, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
LOG: The same bind was seen before, and was failed with hr = 0x80070002.
を私は何をすべき?どんな助力も高く評価されます。
私は取得したバインディングログを追加して投稿を編集しました。これで十分ですか? –
アプリが既に実行された後、ログがfuslogvwを起動したように見えます。実行し、すべてのバインドをロギングしていることを確認してください。 –