WatiN错误无法加载程序集


73

我收到以下WatiN错误:

未处理的异常:System.IO.FileLoadException:无法加载文件或组装'Interop.SHDocVw,版本= 1.0.10.0,Culture =中性,PublicKeyToken = db7cfd3acb5 ad44e'或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自HRESULT的异常:0x80131040)文件名:'Interop.SHDocVw,版本= 1.1.0.0,区域性=中性,PublicKeyToken = db

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


4
我使用NuGet安装了MvcContrib.Mvc3.WatiN-ci,并且收到了相同的错误。这是我第一次决定通过NuGet安装东西...我认为这些问题正是NuGet应该解决的问题吗?
达拉格

Answers:


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)


41
另外,当我添加参照时,我必须将“嵌入互操作类型”的选项更改为false,并将“复制本地”选项设置为true。
达拉格

9
在NUnit中,我们还必须将[RequiresSTA]属性添加到我们的测试装置中。
阿米尔(Amir)

@MoMo请不要在您的答案中添加Darragh评论。将Embed Interop Types更改为false
Pomster '16

122

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


3
谢谢,这为我解决了。我还必须添加[RequiresSTA],如其他答案中所述。
ssmith 2011年

+1这也为我解决了。(我正在VS2010中使用NuGet包)。
JTech 2012年

这对我有用。确保更改设置后重建。
rsbarro

已经为此战斗了两天。就是这样。
布赖恩

32

签出引用“ Interop.SHDocVw.dll”的属性。将“嵌入互操作类型”更改为False。

问题是它没有复制bin文件夹中的dll文件。但是在完成此设置后,它将正确执行。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.