WatiN错误无法加载程序集

aza*_*arp 73 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目录,但它仍然给我同样的问题.

Nic*_*nes 122

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

  • 谢谢,这个为我修好了.我还必须添加[RequiresSTA],如另一个答案中所述. (3认同)

MoM*_*oMo 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. 构建您的解决方案

希望这可以帮助.

更新:尼克琼斯是正确的.如果您正在使用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)

  • 此外,当我添加refernece时,我不得不将Embed Interop Types的选项更改为false,并将Copy Local选项设置为true. (41认同)
  • 在NUnit中,我们还必须将[RequiresSTA]属性添加到我们的testfixture中. (9认同)

ade*_*l41 31

查看参考"Interop.SHDocVw.dll"的属性.将"嵌入互操作类型"更改为False.

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

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