2012-07-31 78 views
2

我正在使用VS2005 C++/CLI庫的.NET 4應用程序。圍繞C++/CLI庫進行的測試是基於自定義控制檯的測試運行器,並且有點笨拙。我一直在嘗試使用nunit編寫一些新的測試。Nunit無法找到C++程序集

問題是基於控制檯的應用程序可以加載所有相關的程序集,但Nunit抱怨說它找不到程序集(例如System.Runtime.Serialization.SerializationException:無法找到程序集'msvcm80,Version = 8.0.50727.6195,Culture =中立,PublicKeyToken = b03f5f7f11d50a3a')。

我已經查明,基於控制檯的應用程序加載在C裝配:\ WINDOWS \ winsxs文件\ x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.6195_none_d09154e044272b9a \ mscvm80.dll和手動複製該文件到構建目錄和測試運行目錄。這沒有幫助。

Depends.exe告訴我,找不到GPSCV.DLL和IESHIMS.DLL,但這並不能阻止控制檯應用程序加載依賴關係,因此不確定這很重要。

有沒有人有任何疑難解答的Nunit測試依賴於舊的C++/CLI庫?

+0

我不確定這是否相關,但是您的計算機上是否安裝了.NET 2.0?另外,您是否可以重建C++/CLI庫來定位.NET 4? – 2012-07-31 11:39:25

+0

謝謝,我沒有在Windows 7程序和功能中安裝.NET 2.0運行時。我會安裝,看看它是否有效。對.NET 4進行重新編譯也很有意義(可能有一些可怕的其他.NET 2依賴項,但只有在我嘗試之後纔會知道)。 – 2012-07-31 12:27:06

回答

1

當我將nunit可執行文件運行到構建輸出路徑時,我的新測試在nunit中成功運行。

看起來好像這個問題僅僅是需要與nunit亞軍在同一路徑上(或者至少可以被nunit訪問)所需的C++ dll。令人困惑的是,當從nunit運行測試時,在另一個位置運行的模塊加載異常會命名nunit路徑中不需要的程序集(msvcm80.dll)。無論如何,依賴樹對我來說有點不透明,這使我產生了很多混淆。

令人討厭的是,我必須通過Team City中的批處理腳本調用nunit控制檯來運行此程序集的CI測試,而不是在Team City nunit測試運行器中運行(與我們針對所有其他測試一樣) 。

+0

首先,您是否使用最新的NUnit? (現在2.6.1)。我記得曾經看到關於託管非託管交互的錯誤報告。其次,你可以讓Team City拿起測試結果,並像Nunit跑步者一樣展示它們。檢查[這個問題](http://stackoverflow.com/questions/8057544/process-nunit-result-xml-and-show-it-in-team-city-web-gui)。 – 2012-08-08 18:23:09

相關問題