0

64 ビット マシンで 32 ビット アプリケーション (x86 としてビルド) を実行しようとしています。32 ビット com オブジェクトを使用するため、x86 としてビルドしました。これを行うまで、アプリは com をロードできませんでした。これで com が読み込まれますが、microsoft.mshtml アセンブリが見つからないというエラーが表示されます。このアセンブリは、(.net) 依存関係の 1 つによって使用されます。

エラーメッセージは次のとおりです。

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に追加する必要があることがわかりました。dll を にドラッグして実行しようとしました\windows\assemblyが、これも機能しませんでした。private\public key に関するエラー メッセージが表示されました。

バインディング ロギングを有効にすると、次のようになります。

=== プレバインド状態情報 ===

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.

私は何をすべきか?どんな助けでも大歓迎です。

4

1 に答える 1

0

コンピューターで fslogvw を実行して、アセンブリ バインディングの失敗に関する追加情報を取得します。それは原因を突き止めるのに役立つはずです。

于 2009-06-09T23:28:46.877 に答える