2015-06-24 44 views
0

我開始一個新的解決方案,其中包含6個項目,2個類庫,一個網站和一個單元測試項目。VS2013快速單元測試FileNotFoundException

我無法爲其中一個類庫設置單元測試。這個庫使用實體框架,我想模擬數據庫上下文來測試各種功能。這些函數在從網站和其他類庫中引用時起作用,但不在單元測試項目中起作用。

當我試圖運行單元測試引用該庫,我得到一個錯誤:

System.IO.FileNotFoundException: Could not load file or assembly 'ClassLibrary', Version=1.0.0.0, Culture=en-US, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.WRN: Assembly binding logging is turned OFF. To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1. Note: There is some performance penalty associated with assembly bind failure logging. To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

現在的錯誤是非常簡單的,它無法找到類庫的DLL。但是,解決方案並不那麼簡單。我花了幾個小時搜索並嘗試不同的東西。這是我到目前爲止所嘗試的:

  1. 該DLL確實存在於它所說的位置。
  2. 將測試體系結構更改爲x64或x86不做任何事,類庫設置爲任何CPU
  3. 我試圖更改庫和測試項目上的所有引用以複製本地,但沒有幫助。
  4. 我已經手動嘗試複製的DLL和改變基準點
  5. 相同的庫可以從網站項目和其他類庫
  6. 我試圖打開該程序集綁定日誌記錄被成功調用,但它沒」 t提供任何新的信息

目前整個解決方案是裸露的骨頭,所以我很靈活的任何建議。我在我的智慧和搜索結束。如果您想了解更多信息,請告訴我。

感謝您的幫助,

克里斯

回答

2

類似Microsoft Unit Testing failure, unable to load DLL to test,如果你設置了AssemblyCulture到任何東西,引用將不再工作。我想這個問題/答案可以保持不變,因爲我無法通過搜索找到另一個。我很幸運在相關部分偶然發現了它。

基本上是:確保,在單元測試項目和項目都AssemblyInfo.cs中被測試AssemblyCulture是一個空字符串:

[assembly: AssemblyCulture("")] 
+0

這解決了我的問題。輸出正在寫入(例如)bin/x86/Debug/Some.DLL,但嘗試從bin/x86/Debug/en-US/Some.DLL加載。 –