WatiN System.IO.FileNotFoundException Interop.SHDocVw

问题描述:

运行我的WatIn测试时,我刚刚开始收到以下错误。WatiN System.IO.FileNotFoundException Interop.SHDocVw

System.IO.FileNotFoundException:未能加载文件或组件 'Interop.SHDocVw,版本= 1.1.0.0,文化=中性 公钥= db7cfd3acb5ad44e' 或它的一个依赖。 系统找不到指定的文件。

我已经在网上搜索并尝试了以下解决方案,但都没有工作。

任何人都可以帮助?

+16

在Visual Studio 2010中,如果对Interop.SHDocVw的引用将“Embed Interop Types”设置为True,则会发生此错误。您应该禁用该选项并确保“复制本地”选项设置为True。更多详细信息在http://*.com/questions/3635716/visual-studio-copy-dll-refrences-to-output-folder/3636732#3636732 – 2011-05-15 19:57:51

+2

转到解决方案资源管理器,单击interop dll,在属性更改“嵌入Interop类型“设置为FALSE。 – scott 2011-09-02 01:33:34

+1

这不适合我,请看我的问题; http://*.com/questions/8728486/getting-started-watin – dannyrosalex 2012-01-04 16:08:41

我总是最终重新编译watin,所以没有签名,因为我不能让任何建议的解决方案工作。

你可以在这里来源:http://watin.org/

打开\源\ src文件夹的解决方案(有VS2008和VS2010版本),打开两个项目,并进入属性 - >签名,取消选中“程序集签名',并建立解决方案。

您应该在\ source \ src \ Core \ bin(WatiN.Core.dll和Interop.SHDocVw.dll)中获取两个DLL - 只需将它们复制到您的项目中,并且它们应该可以正常工作。

+0

嗨,我dowloaded代码,打开VS210 sln,打开每个项目属性(核心和单元测试),并试图建立时,得到以下错误,任何建议? 错误\t \t 1朋友访问被授予 'WatiN.Core.UnitTests,公钥= BLA',但输出组件被命名为“WatiN.Core.UnitTests,版本= 2.0.50.1179文化=中性公钥=空”。尝试添加对'WatiN.Core.UnitTests,PublicKey = BLA的引用,以更改输出程序集名称以匹配。 \t c:\ Users \ gilbertl \ Downloads \ WatiN-2.0.50.1179(1)\ WatiN-2.0.50.1179-net-2.0 \ source \ src \ Core \ bin \ WatiN.Core.dll – 2011-03-25 15:43:58

+0

噢,对不起,忘了那。为Core项目选择“显示所有文件”,然后打开属性 - > AssemblyInfo.cs。将[汇编:InternalsVisibleTo(“WatiN.Core.UnitTests,[whatever] ...')的行更改为'[assembly:InternalsVisibleTo(”WatiN.Core.UnitTests“)]',并重试 – 2011-03-25 15:57:28

+0

BTW,如果你能得到耶稣的解决方案的工作,我会这样做 - 这是一个有点痛苦的事情,我肯定没有必要 – 2011-03-25 16:01:33

您需要Watin附带的Interop.ShDocVw.dll文件,您可能需要将其添加到您的visual studio解决方案或与Watin dll相同的目录(如果它尚未存在)。如果你有它,确保你有正确的版本。

+0

嗨,感谢您的答复。我添加了与Watin一起下载的Interop.ShDocVw.dll。我通过右键单击VS中的引用并添加下载的文件来完成此操作。 – 2011-03-25 15:18:29

+1

同样在构建时,您可能必须更改将参考DLL复制到bin/debug或bin/release文件夹的解决方案选项,这是我之前发生的事情,而不是Watin。 – 2011-03-25 15:20:17

我有这个问题,并通过手动将Interop.ShDocVw.dll添加到输出目录来解决它。

如果您使用的是Visual Studio TestTools,则应该设置DeploymentAttribute来解决此问题。

例子:

[DeploymentItem(@"your_path\Interop.SHDocVw.dll")] 
public class WatinTestSuite { 

... 

} 

你有没有尝试过这样的:

转到Solution Explorer中,点击互操作的dll,在性质改变 “嵌入互操作类型” 设置为FALSE。

最好为.net studio使用NuGet插件,然后通过“Add Library Package Reference”添加对wattin的引用。

+2

像魅力一样工作,谢谢! – joeriks 2011-07-17 09:33:58

+1

我以前曾经手动下载过WatiN,并且一切正常。我刚刚从NuGet拉了一下,一切都停止了。根据你的建议,我研究了interop dll的使用方式,并默认将Interop类型嵌入到False中。对于WatiN来说,NuGet的安装显然已经坏了,但是你的建议全部排除了。 – Bronumski 2011-10-24 11:21:51

+1

我刚开始使用WatIn。我用NuGet安装它并遇到这个问题。你的修复工作完美。我想这只是基于.Net 4的测试项目的一个问题。我相信,在主程序集中嵌入互操作类型的选项是.Net 4的一个特性。谢谢您的帮助! – dariom 2011-12-05 06:43:52

Interop.SHDocVw,Microsoft.mshtml dlls的Embed Interop Types属性设置为False;

当然,Visual Studio会给你警告如何修改。

+0

嗨Olanrewaju(欢迎来到*!),这个答案不是很清楚。你能再解释一下吗? – 2012-09-25 07:31:36

+0

这就是我所做的解决我的问题,看看那里以及http://bhameyie.com/2011/10/09/watin-annoying-interop-issue/ – 2013-10-18 20:11:01

+0

它没有为我工作... – Jack 2015-01-29 19:33:29

在我的情况下,我尝试了所有建议的解决方案,但没有奏效。我最终以管理权限关闭并重新打开了Visual Studio 2015,然后解决方案已成功编译。

希望它可以帮助别人。