我收到以下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目录,但它仍然给我同样的问题。
答案 0 :(得分:122)
如果您已经在VS2010中使用NuGet安装并引用了WatiN,那么您应该已经拥有正确的引用,因此不需要删除它们并重新添加它们。但是你仍然需要在Interop.SHDocVw参考上将“嵌入互操作类型”设置更改为False。
答案 1 :(得分:49)
更新:此答案是在Nuget发布之前编写的,仅在您不使用Nuget管理依赖项时才适用。如果您正在使用Nuget,请查看@Nick Jones的答案
我今天刚遇到这个问题。您需要下载最新版本的WatiN(我使用的是2.0.10.928)并引用WatiN提供的已签名的Interop.SHDocVw.dll。
尝试下面的内容:
希望这有帮助。
更新:尼克琼斯是对的。如果你正在使用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文件。但是在这个设置之后,它会正确地完成它。
我遇到了同样的错误,现在工作正常。