2011-03-25 73 views
38

運行我的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://stackoverflow.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://stackoverflow.com/questions/8728486/getting-started-watin – dannyrosalex 2012-01-04 16:08:41

回答

2

我總是最終重新編譯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

2

您需要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

4

我有這個問題,並通過手動將Interop.ShDocVw.dll添加到輸出目錄來解決它。

0

如果您使用的是Visual Studio TestTools,則應該設置DeploymentAttribute來解決此問題。

例子:

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

... 

} 
76

你有沒有嘗試過這樣的:

轉到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

7

Interop.SHDocVw,Microsoft.mshtml dlls的Embed Interop Types屬性設置爲False;

當然,Visual Studio會給你警告如何修改。

+0

嗨Olanrewaju(歡迎來到StackOverflow!),這個答案不是很清楚。你能再解釋一下嗎? – 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

0

在我的情況下,我嘗試了所有建議的解決方案,但沒有奏效。我最終以管理權限關閉並重新打開了Visual Studio 2015,然後解決方案已成功編譯。

希望它可以幫助別人。

相關問題