【问题标题】:WatiN Error Could not Load AssemblyWatiN 错误无法加载程序集
【发布时间】:2010-11-30 06:25:46
【问题描述】:

我收到以下 WatiN 错误:

未处理的异常:System.IO.FileLoadException:无法加载文件 或组装'Interop.SHDocVw,版本=1.1.0.0,文化=中性, PublicKeyToken=db7cfd3acb5 ad44e' 或其依赖项之一。这 定位程序集的清单定义与程序集不匹配 参考。 (HRESULT 异常:0x80131040)文件名: 'Interop.SHDocVw,版本=1.1.0.0,文化=中性,PublicKeyToken=db

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

【问题讨论】:

  • 我使用 NuGet 安装了 MvcContrib.Mvc3.WatiN-ci 并且收到了同样的错误。这是我第一次决定通过 NuGet 安装一些东西……我认为这些问题是 NuGet 应该解决的问题?

标签: watin


【解决方案1】:

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

【讨论】:

  • 谢谢,这已经帮我解决了。如另一个答案中所述,我还必须添加 [RequiresSTA]。
  • +1 这也为我解决了问题。 (我在VS2010中使用的是NuGet包)。
  • 这对我有用。确保在更改设置后重建。
  • 已经为此奋斗了 2 天。就是这样。
【解决方案2】:

更新:此答案是在 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 时也收到此消息。乍一看是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)

【讨论】:

  • 另外,当我添加引用时,我必须将 Embed Interop Types 的选项更改为 false,并将 Copy Local 选项设置为 true。
  • 在 NUnit 中,我们还必须将 [RequiresSTA] 属性添加到我们的测试装置中。
  • @MoMo 请不要将 Darragh 评论添加到您的答案中。将嵌入互操作类型更改为 false
【解决方案3】:

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

问题是它没有将 dll 文件复制到您的 bin 文件夹中。但是经过这个设置,它会正常的。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 2023-03-05
    相关资源
    最近更新 更多