ファイルまたはアセンブリ「Microsoft.mshtml」を読み込めませんでした…厳密な名前の検証に失敗しました

StackOverflow https://stackoverflow.com/questions/2068159

  •  20-09-2019
  •  | 
  •  

質問

WPF/C# プログラムを作成し、WYSIWYG HTML 編集にインターネット コントロールを使用しています。

これは通常の実行可能プログラムです。

ほとんどのコンピュータで動作しますが、一部のコンピュータでは次のエラーが発生します。

ファイルまたはアセンブリのMicrosoft.mshtml、version = 7.0.3300.0、Culture = neutral、publicKeyToken = B03F5F7F11D50A3A 'またはその依存関係の1つをロードできませんでした。強い名前の検証に失敗しました。

「Microsoft.mshtml.dll」ファイルはプログラムとともに配布されます。他の必要な DLL はすべて、exe ファイルと同じフォルダー内にあります。


ここからの出力は次のとおりです Fuslogvw

*** Assembly Binder Log Entry  (1/14/2010 @ 6:36:51 PM) ***

The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.

Assembly manager loaded from:  c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
Running under executable  C:\Documents and Settings\office\Desktop\Database\DATABASE.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: User = CAMPUSREMOTE\office
LOG: DisplayName = Microsoft.mshtml, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 (Fully-specified)
LOG: Appbase = file:///C:/Documents and Settings/office/Desktop/Database/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = DATABASE.exe
Calling assembly : ChabadOnCampusMainFrontEnd, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: Start binding of native image Microsoft.mshtml, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a.
WRN: No matching native image found.

ありがとう

役に立ちましたか?

解決

プログラムとともに配布される「Microsoft.mshtml.dll」ファイルが Office ファイルではなく PIA ファイルであることを確認します。一部のサイトでは、Office ファイルは「遅延署名」されており、PIA ファイル (VS インストールとともにインストールされる) は署名されたコピーであると主張しています。私のコンピュータには 3 つの異なるバージョンの「Microsoft.mshtml.dll」ファイルがあります (ファイルサイズは同じですが、内容が異なります)。

  1. "c:\Program Files\Microsoft Visual Studio 9.0\Visual Studio Tools for Office\PIA\Office11\Microsoft.mshtml.dll"

  2. "c:\Program Files\Microsoft Visual Studio 9.0\Visual Studio Tools for Office\PIA\Office12\Microsoft.mshtml.dll"

  3. "c:\Program Files\Microsoft.NET\Primary Interop Assemblies\Microsoft.mshtml.dll"

プロジェクトから「Microsoft.mshtml.dll」参照を削除します。「参照の追加」、「.Net」タブを使用し、PIA ファイルを選択し、「ローカルにコピー」オプションを使用します。(私にとってはうまくいきました。。。)

アタラ

他のヒント

PIA フォルダーの Microsoft.mshtml.dll は署名されていません。
プロジェクトに署名している場合は、「Primary Interop Assemblies」フォルダーからバージョンを取得する必要があります。


そのためには:

1.Microsoft.mshtml への参照を削除します (プロジェクト内に Microsoft.mshtml がある場合)

2.[参照の追加] をクリックし、[拡張機能] ではなく [参照] を選択し、[C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies] (.64 ビット マシンの場合) をポイントします。そのバージョンは署名されています。 。

3.以下を設定するには、プロパティを編集します (microsoft.mshtml 参照を選択して F4 キーを押します)。

埋め込み相互運用タイプ=false
ローカルにコピー=true


4.プロジェクトを再構築する

この問題を追跡する最初のステップは、それが本当に Mcirosoft.mshtml.dll なのか、それともその依存関係の 1 つなのかを判断することです。これを行う最善の方法は、fuslogvw を使用してアセンブリのロードの失敗を追跡することです。どのアセンブリが失敗しているかに関する詳細情報が提供されます。

どのアセンブリが失敗しているかを特定したら、結果をポストバックしてください。

編集

この警告メッセージは、操作が最終的に成功したことを示唆しています。エラーはないようです。

私も、これと同じ問題を抱えていたが、私の問題は、TFS 2008のビルドし使用していました。 hintpathは相対的だったと正確なパスに変更する必要がありました。 それ以外の場合は、ビルド時に、それは、Office mshtml.dllを拾いまま

<HintPath>..\..\..\..\..\..\..\..\Program Files\Microsoft.NET\Primary Interop Assemblies\Microsoft.mshtml.dll</HintPath>

<HintPath>C:\Program Files\Microsoft.NET\Primary Interop Assemblies\Microsoft.mshtml.dll</HintPath>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top