无法加载程序集

我得到了下面的 WatiN 错误:

未处理异常: System.IO.FileLoadException: 无法加载文件 或汇编 y‘ Interop.SHDocVw,版本 = 1.1.0.0,文化 = 中性, PublicKeyToken = db7cfd3acb5 ad44e’或其依赖项之一 找到的程序集的清单定义与该程序集不匹配 (来自 HRESULT T: 0x80131040的异常)文件名: ‘ Interop.SHDocVw,版本 = 1.1.0.0,文化 = 中性,PublicKeyToken = db

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

20746 次浏览

更新: 这个答案是在 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.TestHelper-ci 是 WatiN.Core.dll (1.3.0.4000)的 使用旧版本,其中作为 MvcContrib。WatiN 软件包正在使用一个更新的版本(2.0.0.99)

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

检查引用“ Interop.SHDocVw.dll”的属性。将“ Embed Interop Type”更改为 False。

问题是它没有复制 bin 文件夹中的 dll 文件。但是在这个设置之后,它会正确地做到这一点。

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