21

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

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

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

ファイルまたはアセンブリ'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.

ありがとう

4

5 に答える 5

21

プログラムとともに配布される「Microsoft.mshtml.dll」ファイルがPIAファイルであり、Officeファイルではないことを確認します。一部のサイトでは、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ファイルを選択して、[loacalのコピー]オプションを使用します。(それは私のために働いた。。。。)

アタラ

于 2010-03-09T10:36:51.667 に答える
8

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


これを行うには:

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

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

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

。EmbedInteropTypes = false
Copy Local =


true4.プロジェクトを再構築します。

于 2015-04-20T10:50:00.067 に答える
2

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

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

編集

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

于 2010-01-14T23:03:46.773 に答える
2

これと同じ問題が発生しましたが、問題はTFS Build 2008の使用でした。ヒントパスは相対的なものであり、正確なパスに変更する必要がありました。それ以外の場合、ビルド中にOfficemshtml.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>
于 2010-12-18T00:34:58.103 に答える
0

何日も答えを見つけてさまざまな解決策を試した後、プロジェクトのルート(Windowsエクスプローラーで)で「Microsoft.mshtml」を検索して削除することになりました。

于 2022-01-17T08:22:43.257 に答える