代码之家  ›  专栏  ›  技术社区  ›  azamsharp

watin错误无法加载程序集

  •  73
  • azamsharp  · 技术社区  · 15 年前

    我得到以下watin错误:

    未处理的异常:System.IO.FileLoadException:无法加载文件 或assembl y'interop.shdocvw,version=1.1.0.0,culture=neutral, publicKeyToken=db7cfd3acb5 ad44e'或其依赖项之一。这个 找到的程序集的清单定义与程序集不匹配 参考文献。(来自hresult的异常:0x80131040)文件名: 'interop.shdocvw,版本=1.1.0.0,区域性=中性,publickeytoken=db

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

    3 回复  |  直到 8 年前
        1
  •  49
  •   Community CDub    8 年前

    更新:此答案是在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,这不是问题……但是在使用mvcontrib.mvc3.testHelper-ci时,我也收到了这个消息。乍一看 seems like the '-ci' packages is the way to go 但我决定使用mvcontrib.watin包有两个原因。

    1)我没有收到“无法加载文件或程序集”错误消息

    2)mvcontrib.mvc3.testHelper-ci是 using an old version watin.core.dll(1.3.0.4000),其中mvcontrib.watin包使用的是较新版本(2.0.0.99)

        2
  •  120
  •   Nick Jones    14 年前

    如果您已经在VS2010中使用nuget安装并引用了watin,那么您应该已经拥有了正确的引用,因此不需要删除它们并重新添加。但在interop.shdocvw引用上,仍然需要将“嵌入互操作类型”设置更改为false。

        3
  •  30
  •   adeel41    14 年前

    检查引用“interop.shdocvw.dll”的属性。将“嵌入互操作类型”更改为false。

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

    我也犯了同样的错误,现在一切正常。