WatiN错误无法加载程序集

时间:2009-09-22 00:56:35

标签: watin

我收到以下WatiN错误:

  

未处理的异常:System.IO.FileLoadException:无法加载文件   或者组合'Interop.SHDocVw,Version = 1.1.0.0,Culture = neutral,   PublicKeyToken = db7cfd3acb5 ad44e'或其依赖项之一。该   找到程序集的清单定义与程序集不匹配   参考。 (来自HRESULT的异常:0x80131040)文件名:   'Interop.SHDocVw,Version = 1.1.0.0,Culture = neutral,PublicKeyToken = db

我将shdocvw.dll从System32复制到bin目录,但它仍然给我同样的问题。

3 个答案:

答案 0 :(得分:122)

如果您已经在VS2010中使用NuGet安装并引用了WatiN,那么您应该已经拥有正确的引用,因此不需要删除它们并重新添加它们。但是你仍然需要在Interop.SHDocVw参考上将“嵌入互操作类型”设置更改为False。

答案 1 :(得分:49)

更新:此答案是在Nuget发布之前编写的,仅在您不使用Nuget管理依赖项时才适用。如果您正在使用Nuget,请查看@Nick Jones的答案

我今天刚遇到这个问题。您需要下载最新版本的WatiN(我使用的是2.0.10.928)并引用WatiN提供的已签名的Interop.SHDocVw.dll。

尝试下面的内容:

  1. 删除所有其他对Interop.SHDocVw.dll的引用
  2. 右键单击您的解决方案并选择“清洁解决方案”
  3. 引用WatiN提供的Interop.SHDocVw.dll
  4. 构建解决方案。
  5. 希望这有帮助。

    更新:尼克琼斯是对的。如果你正在使用NuGet,这应该不是问题....但是当我使用MvcContrib.Mvc3.TestHelper-ci时我也收到了这条消息。乍一看seems like the '-ci' packages is the way to go但我决定使用MvcContrib.WatiN包有两个原因。

    1)我没有收到“无法加载文件或程序集”错误消息

    2)MvcContrib.Mvc3.TestHelper-ci是WatiN.Core.dll(1.3.0.4000)的using an old version,其中MvcContrib.WatiN包使用更新的版本(2.0.0.99)

答案 2 :(得分:31)

查看参考资料“Interop.SHDocVw.dll”的属性。将“嵌入互操作类型”更改为False。

问题是它没有复制bin文件夹中的dll文件。但是在这个设置之后,它会正确地完成它。

我遇到了同样的错误,现在工作正常。