2012-08-22 41 views
1

我正在爲我現有的項目在Visual Studio 2010中創建一個測試項目。我添加了一個DLL的參考資料,該資源正在用於創建此測試項目的項目中。如何在我的測試項目中使用其他文件夾/位置的可執行文件/ DLL?

現在的問題是,添加該DLL的引用後,當我試圖執行測試,然後我得到一個運行時異常,因爲

System.IO.FileNotFoundException: Could not load file or assembly 
'SOME NAME, Version=2.5.2.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified 

我已經改變Copy Local屬性解決了這個問題對True的引用。但我不想將其改爲真。因爲我不想在測試項目的調試文件夾中複製這個文件。

有沒有其他方法可以做到這一點?

回答

0

這是一個重要的問題幾年前我問自己,發現如下切實可行的解決辦法:在$root$\bin\Debug

    • 把所有的應用程序的DLL(測試)把所有的測試中的DLL $root$\bin
    • 對於每個測試的DLL或EXE,有一個App.config文件,看起來像下面的內容(注意,我包括在探測路徑中,當然.\Debug,但也.\NUnit\bin,因爲我把NUnit組件)

    <?xml version =「1.0」encoding =「utf-8」? > <配置> <運行時> < assemblyBinding的xmlns = 「甕:架構 - 微軟-COM:asm.v1」 > <探測privatePath = 「調試; NUnit的\ BIN」/ > </assemblyBinding > </runtime > </configuration >

    enter image description here

    順便說一句,只是從來沒有使用Copy Local = true,我就這個話題寫white books(它會減慢編譯時間長達10倍!)

  • +0

    非常感謝。這意味着當我在測試項目的情況下找到另一種從另一個目錄中引用DLL的方式時。我分享這個答案。 – Neeraj

    0

    當我們在2010年VS談論測試項目,然後我們有「Local.testsettings」文件,在「解決方案項目」目錄內的測試解決方案中自動創建。

    爲了提供在測試項目中需要的可執行文件/ Dll的參考,我們需要添加它們的引用以及我們需要修改這個「Local.testsettings」文件,如果我們不想創建這些可執行文件/ DLL的本地副本。

    現在的問題是該檔案改變什麼? 雙擊Visual Studio中的「Local.testsettings」文件。 轉到「單元測試」菜單項。 爲要加載的程序集提供根文件夾。 (這可以是您想要在我們的測試項目中使用可執行文件/ DLL的任何目錄)。 使用「添加文件夾」按鈕,在運行測試時使用的文件夾中提供相同的文件夾。

    注意: 要保存此文件,您需要替換上一個。 點擊「應用」按鈕。 然後點擊「另存爲」按鈕,選擇舊的「Local.testsettings」文件的位置並替換該文件。

    對我來說,在我的測試項目中,我並沒有在我的測試項目中使用我的任何DLL的本地副本。更改「Local.testsettings」文件後,我可以成功運行測試。

    相關問題