2010-05-06 55 views
0

我有一個由大約4000 MbUnit測試覆蓋的.NET 3.5程序集。我一直在使用mbunit.cons.exe程序運行這些程序,沒有任何問題。在Gallio/MbUnit失敗中運行的測試;無法加載Castle DynamicProxy

現在我嘗試切換到公堂(mbunit.cons.exe開始生產的XML報告時,與「內存不足」異常吹起來)。

當運行在伊卡洛斯測試,他們大多會失敗,但以下情況除外:

System.TypeInitializationException: The type initializer for 'Rhino.Mocks.MockRepository' threw an exception. ---> 
System.IO.FileLoadException: Could not load file or assembly 'Castle.DynamicProxy2, Version=2.0.3.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc' or one of its dependencies. 
The located assembly's manifest definition does not match the assembly reference. 
(Exception from HRESULT: 0x80131040) at Rhino.Mocks.MockRepository..cctor()

大會根據測試並使用動態代理。動態代理程序集與被測程序集位於同一個目錄中。

我試圖把包含組件的目錄中的「提示目錄」,「應用程序基目錄」和伊卡洛斯「工作目錄」字段,但是這不會改變結果。

有沒有人成功地使用加利奧和動態代理一起,或有任何暗示,以問題可能是什麼?

回答

0

貌似Rhino.Mocks引用不同版本的Castle.DynamicProxy2。它試圖尋找'Castle.DynamicProxy2, Version=2.0.3.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc'。你能看看bin文件夾中的Castle.DynamicProxy2程序集,看它是否具有相同的版本和PubliKeyToken

+0

你知道嗎?你是對的!我有版本2.1.0.0 但我不明白的是爲什麼程序集會自己和MbUnit正確工作,但不是與Gallio。 事實證明,我們正在使用依賴於兩個不同版本的動態代理的兩個不同的第三方的DLL(微內核和犀牛製品)。 這將是前一段時間,我可以得到的版本理順,找出這是否正常工作。感謝您讓我走上正軌。 – andypaxo 2010-05-06 23:19:20

+1

Rhino.Mocks使用ILMerge內化了DynamicProxy。因此,除非您從源代碼構建自己的副本,並且不執行合併,否則我對您描述的行爲感到驚訝。 – 2010-05-08 10:37:31

+0

@Jeff ...是的,最終發現了這一點。我們正在使用犀牛的未合併版本。不幸的是,合併後的版本並沒有內部化,所以我們也遇到了問題(我們的項目使用Castle Windsor)。儘管如此,自己運行ILMerge以獲得(幾乎)所有內化的工作都很棒。 – andypaxo 2010-05-08 15:29:42

相關問題