因此,我嘗試使用NDepend API爲我的代碼上的某些度量標準(這很好地工作)設置項目,但是,當我嘗試運行測試框架(NUnit) ,我得到了TypeInitializationExceptions拋出。使用NUnit測試時,NDepend TypeInitializationExceptions
下面是一些代碼來重現,我發現了錯誤:
創建一個類庫項目,並在
$NDependInstallPath$\lib\NDependAPI
引用NDepend的API DLL,設置複製本地false
。創建一個類,如下所示:public class NDependProjectLoader { public void LoadAnNDependProject() { var provider = new NDependServicesProvider(); } }
創建的解決方案,這將是您的測試類第二類庫項目。 NUnit的參考和項目創建引用NDependAPI
[TestFixture] public class NDependProjectLoader_Tests { [Test] public void I_can_load_an_depend_project() { new NDependProjectLoader().LoadAnNDependProject(); } }
構建,並使用你選擇的測試運行運行測試(我試過ReSharper的測試運行和NUnit的GUI)。
您將在行上獲得TypeInitializationException var provider = new NDependServicesProvider();
尋找那TypeInitializationException內表明根異常的消息是:
"{"Could not load file or assembly 'NDepend.Platform.DotNet' or one of its dependencies. The system cannot find the file specified.":"NDepend.Platform.DotNet"}".
添加從NDepend.PowerTools樣本項目AssemblyResolverHelper,把它作爲獲取描述入門指南不會改變行爲。
I /假定/,這個問題是關係到NDepend的API在此聲明入門指南在http://www.ndepend.com/api/NDepend.API_gettingstarted.html
「的可執行程序集必須生成到$ NDependInstallPath $ \」
在代碼從測試運行器啓動的情況下,可執行文件將不在ndepend安裝路徑中。
從一個控制檯應用程序,它的.exe在$ NDependInstallPath $ \ LIB \生成調用NDependProjectLoader.LoadAnNDependProject()(注意,該.exe似乎需要的\ lib \子文件夾中生成未在$ NDependInstallPath $ \如入門指南中所述)不會產生異常,這進一步指出這是原因。
所以,問題是,如何使用除了控制檯應用程序之外的其他任何東西的NDepend API?例如,在這裏我想從一個測試跑步者那裏做這件事。另一個明顯的候選人是IIS應用程序。我錯過了明顯的東西嗎?
謝謝,現在工作的魅力! – thejackamo 2014-12-03 02:29:38