2008-10-14 42 views
0

我的應用程序包含了一塊組件服務的內部執行代碼,所以我們需要註冊在GAC我們的業務規則層(及其依賴)。其中一個依賴項是FooCore.dll,其中包含對整個應用程序可見的類和服務。當組件在GAC中時,Visual Studio單元測試會拋出MissingMethodException?

一切工作正常,直到我加入到FooCore類的新方法。現在,當我運行我的單元測試時,任何調用此新方法的測試都會拋出MissingMethodException,即使我使用最新版本的程序集更新GAC。唯一的解決方法是在運行測試之前從GAC中移除FooCore。

我已經試過了以下幾件事:

  • 重建整個解決方案,在GAC更新的東西,然後跑測試=失敗
  • 刪除並重新加入測試項目FooCore裝配基準=失敗
  • 確保FooCore在屬性中設置爲「複製本地」=失敗

我該怎麼做才能確保VSTS從其明確定義的位置加載引用的程序集,而不是來自GAC?

回答

0

進一步研究打開了this forum thread on this issue,其中有人建議這可能是由VS2008的性能分析功能握住組件的陳舊版本引起的。

我能夠解決我的問題:

  1. 重建我的解決方案,然後
  2. 刷新一切都在GAC,然後
  3. 刪除並重新添加在我的測試項目中的程序集的引用,然後
  4. 關閉並重新打開Visual Studio 2008中

我不知道它的這些步驟都是明確必要的,但這個「廚房水槽」的方式爲我解決了這個問題。

更新:This Microsoft article指出,編譯解決方案時,即使「Copy Local」設置爲true,在GAC中找到的程序集也不會複製到輸出bin \文件夾。

0

在我來說,我有兩個相同的(幾乎)具有不同的位置組件。 所測試的項目被參考到所述第一組件和所述單元測試項目到第二個參考(它們是絕對相同)。

所以仔細檢查所有項目引用。

相關問題