web-dev-qa-db-ja.com

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

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

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

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

ファイルまたはアセンブリ 'Microsoft.mshtml、Version = 7.0.3300.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a'またはその依存関係の1つを読み込めませんでした。厳密な名前の検証に失敗しました。

「Microsoft.mshtml.dll」ファイルはプログラムとともに配布されます。これは、exeファイルと同じフォルダーにある他のすべての必須dllと一緒です。


これは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.

ありがとう

19
Rabbi

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

  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ファイルを選択し、「ローカルのコピー」オプションを使用します。 (それは私のために働きました...)

アタラ

19
Atara

PIAフォルダーのMicrosoft.mshtml.dllは署名されていません。
プロジェクトに署名した場合、「プライマリ相互運用機能アセンブリ」フォルダからバージョンを取得する必要があります。


それを行うには:

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

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

3。プロパティを編集して(Microsoft.mshtmlリファレンスを選択し、F4キーを押します)、次のように設定します。

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


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

4
Hrvoje Matić

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

失敗しているアセンブリを特定したら、結果を投稿してください。

[〜#〜]編集[〜#〜]

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

2
JaredPar

私も同じ問題を抱えていましたが、私の問題はTFSビルド2008を使用していました。ヒントパスは相対パスであり、正確なパスに変更する必要がありました。それ以外の場合は、ビルド中に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>
1
John