WatiN System.IO.FileNotFoundException Interop.SHDocVw
运行我的WatIn测试时,我刚刚开始收到以下错误。WatiN System.IO.FileNotFoundException Interop.SHDocVw
System.IO.FileNotFoundException:未能加载文件或组件 'Interop.SHDocVw,版本= 1.1.0.0,文化=中性 公钥= db7cfd3acb5ad44e' 或它的一个依赖。 系统找不到指定的文件。
我已经在网上搜索并尝试了以下解决方案,但都没有工作。
- http://linrayusa.blogspot.com/2008/08/vsts-2008-could-not-load-file-or.html
- WatiN Error Could not Load Assembly
- http://blogs.msdn.com/b/dougste/archive/2006/09/05/741329.aspx
任何人都可以帮助?
我总是最终重新编译watin,所以没有签名,因为我不能让任何建议的解决方案工作。
你可以在这里来源:http://watin.org/
打开\源\ src文件夹的解决方案(有VS2008和VS2010版本),打开两个项目,并进入属性 - >签名,取消选中“程序集签名',并建立解决方案。
您应该在\ source \ src \ Core \ bin(WatiN.Core.dll和Interop.SHDocVw.dll)中获取两个DLL - 只需将它们复制到您的项目中,并且它们应该可以正常工作。
嗨,我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
噢,对不起,忘了那。为Core项目选择“显示所有文件”,然后打开属性 - > AssemblyInfo.cs。将[汇编:InternalsVisibleTo(“WatiN.Core.UnitTests,[whatever] ...')的行更改为'[assembly:InternalsVisibleTo(”WatiN.Core.UnitTests“)]',并重试 – 2011-03-25 15:57:28
BTW,如果你能得到耶稣的解决方案的工作,我会这样做 - 这是一个有点痛苦的事情,我肯定没有必要 – 2011-03-25 16:01:33
您需要Watin附带的Interop.ShDocVw.dll文件,您可能需要将其添加到您的visual studio解决方案或与Watin dll相同的目录(如果它尚未存在)。如果你有它,确保你有正确的版本。
嗨,感谢您的答复。我添加了与Watin一起下载的Interop.ShDocVw.dll。我通过右键单击VS中的引用并添加下载的文件来完成此操作。 – 2011-03-25 15:18:29
同样在构建时,您可能必须更改将参考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的引用。
像魅力一样工作,谢谢! – joeriks 2011-07-17 09:33:58
我以前曾经手动下载过WatiN,并且一切正常。我刚刚从NuGet拉了一下,一切都停止了。根据你的建议,我研究了interop dll的使用方式,并默认将Interop类型嵌入到False中。对于WatiN来说,NuGet的安装显然已经坏了,但是你的建议全部排除了。 – Bronumski 2011-10-24 11:21:51
我刚开始使用WatIn。我用NuGet安装它并遇到这个问题。你的修复工作完美。我想这只是基于.Net 4的测试项目的一个问题。我相信,在主程序集中嵌入互操作类型的选项是.Net 4的一个特性。谢谢您的帮助! – dariom 2011-12-05 06:43:52
将Interop.SHDocVw
,Microsoft.mshtml dlls的Embed Interop Types
属性设置为False
;
当然,Visual Studio会给你警告如何修改。
嗨Olanrewaju(欢迎来到*!),这个答案不是很清楚。你能再解释一下吗? – 2012-09-25 07:31:36
这就是我所做的解决我的问题,看看那里以及http://bhameyie.com/2011/10/09/watin-annoying-interop-issue/ – 2013-10-18 20:11:01
它没有为我工作... – Jack 2015-01-29 19:33:29
在我的情况下,我尝试了所有建议的解决方案,但没有奏效。我最终以管理权限关闭并重新打开了Visual Studio 2015,然后解决方案已成功编译。
希望它可以帮助别人。
在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
转到解决方案资源管理器,单击interop dll,在属性更改“嵌入Interop类型“设置为FALSE。 – scott 2011-09-02 01:33:34
这不适合我,请看我的问题; http://*.com/questions/8728486/getting-started-watin – dannyrosalex 2012-01-04 16:08:41