WatiN错误无法加载程序集

我收到以下WatiN错误:

未处理的exception:System.IO.FileLoadException:无法加载文件或assembly“Interop.SHDocVw,版本= 1.1.0.0,文化=中立,PublicKeyToken = db7cfd3acb5 ad44e”或其依赖项之一。 定位的程序集的清单定义不符合程序集引用。 (来自HRESULT的exception:0x80131040)文件名:'Interop.SHDocVw,Version = 1.1.0.0,Culture = neutral,PublicKeyToken = db

我将System32的shDocvw.dll复制到bin目录下,但仍然给我带来了同样的问题。

更新:这个答案是在Nuget发布之前编写的,只有当你不使用Nuget来pipe理你的依赖时才适用。 如果你使用的是Nuget,请看@Nick Jones的答案

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

试试看:

  1. 删除Interop.SHDocVw.dll的所有其他引用
  2. 右键单击您的解决scheme并select“清理解决scheme
  3. 引用由WatiN提供的Interop.SHDocVw.dll
  4. build立你的解决scheme

希望这可以帮助。

更新:尼克·琼斯是正确的。 这不应该是一个问题,如果您正在使用NuGet ….但我也收到此消息时使用MvcContrib.Mvc3.TestHelper-ci。 乍一看, 似乎'-ci'包是要走的路,但我决定使用MvcContrib.WatiN包有两个原因。

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

2)MvcContrib.Mvc3.TestHelper-ci 使用旧版本的WatiN.Core.dll(1.3.0.4000),其中MvcContrib.WatiN软件包使用较新的版本(2.0.0.99)

如果你已经在VS2010中使用NuGet来安装和引用WatiN,那么你应该已经拥有了正确的引用,所以它们不需要被删除和重新添加。 但是,您仍然需要在Interop.SHDocVw引用上将“embeddedInteroptypes”设置更改为False。

查看参考“Interop.SHDocVw.dll”的属性。 将“embedded互操作types”更改为False。

问题是,它不是复制bin文件夹中的dll文件。 但是在这个设置之后,它会正确地执行。

我有同样的错误,现在它的工作正常。

Interesting Posts