web-dev-qa-db-ja.com

WatiNエラーはアセンブリをロードできませんでした

次のWatiNエラーが発生します。

未処理の例外:System.IO.FileLoadException:ファイルまたはアセンブリを読み込めませんでした 'Interop.SHDocVw、Version = 1.1.0.0、Culture = neutral、PublicKeyToken = db7cfd3acb5 ad44e'またはその依存関係の1つ。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。 (HRESULTからの例外:0x80131040)ファイル名: 'Interop.SHDocVw、Version = 1.1.0.0、Culture = neutral、PublicKeyToken = db

System32からbinディレクトリにshDocvw.dllをコピーしましたが、それでも同じ問題が発生します。

73
azamsharp

更新:この回答はNugetがリリースされる前に作成され、Nugetを使用して依存関係を管理していない場合にのみ適用されます。Nugetを使用している場合は、回答を参照してくださいニック・ジョーンズ

今日、この問題が発生しました。 WatiNの最新バージョン(私は2.0.10.928を使用しています)をダウンロードし、WatiNが提供する署名付きのInterop.SHDocVw.dllを参照する必要があります。

次のことを試してください。

  1. Interop.SHDocVw.dllへの他のすべての参照を削除します
  2. ソリューションを右クリックして、[ソリューションのクリーン]を選択します
  3. WatiNが提供するInterop.SHDocVw.dllを参照する
  4. ソリューションを構築します。

お役に立てれば。

更新: ニック・ジョーンズは正しいです。これはNuGetを使用している場合は問題にならないはずですですが、MvcContrib.Mvc3.TestHelper-ciを使用しているときにもこのメッセージが表示されました。一見すると '-ci'パッケージが先にあるようです ですが、2つの理由でMvcContrib.WatiNパッケージを使用することにしました。

1)「ファイルまたはアセンブリを読み込めませんでした」というエラーメッセージが表示されない

2)MvcContrib.Mvc3.TestHelper-ciは 古いバージョンを使用 WatiN.Core.dll(1.3.0.4000)で、MvcContrib.WatiNパッケージは新しいバージョン(2.0.0.99)を使用しています

49
MoMo

VS2010でNuGetを使用してWatiNをインストールおよび参照している場合は、正しい参照が既にあるはずなので、それらを削除して再度追加する必要はありません。ただし、Interop.SHDocVw参照の「Embed Interop Types」設定をFalseに変更する必要があります。

122
Nick Jones

リファレンス「Interop.SHDocVw.dll」のプロパティを確認してください。 「Embed Interop Types」をFalseに変更します。

問題は、binフォルダー内のdllファイルをコピーしていないことです。しかし、この設定の後、それはそれを適切に行います。

私は同じエラーを抱えていましたが、現在は正常に機能しています。

31
adeel41