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.