2008-09-08 153 views
5

在我的WinForms應用程序之間的不同,AppDomain.CurrentDomain.BaseDirectory設置爲 「C:\項目\ TestProject \ BIN \調試\」爲什麼AppDomain.CurrentDomain.BaseDirectory Windows Forms和圖書館

在我的單元測試它是「C:\ Projects \ TestProject \ bin \ Debug」(沒有最後一個斜槓)。爲什麼是這樣?

[編輯] @Will:我在問爲什麼測試項目的目錄沒有結尾的斜槓?

回答

9

您可能會問兩個可能的問題之一:它們爲什麼不同,或者爲什麼測試項目的目錄沒有結尾斜線。

假設它是第一個:這是代碼執行的地方。當你調試程序時,它的編譯和二進制文件被放置在項目的\ bin \ debug目錄下。在測試時,您正在運行測試的二進制文件,它們被編譯並放置在測試項目的bin \ debug目錄下。

假設它是最後一個:可能是一些晦澀的原因,可能是一個錯誤,或者可能捕捉串聯路徑的人而不是使用Path.Combine(頑皮淘氣!)。


嗯,我不知道爲什麼它不同。測試應用程序可以在自定義CLR主機中運行;我認爲這可能是這種情況,因爲測試應用程序通常不允許在標準CLR主機中使用私有訪問器來做一些奇怪的事情。因爲我沒有任何關於這些東西是如何編碼的實際知識,所以我只在這裏抓住了一些東西。

無論如何,解決方法立場(Path.Combine)。沒有人應該連接路徑,因爲路徑定界符可以改變。

+2

是的,沒有人應該連接路徑(並且這不是問題,有人通過查找路徑中的Debug來檢查代碼是否在IDE中運行)。當我編寫單元測試失敗時,我發現了這種奇怪的行爲。主要是好奇心。 – 2008-10-08 16:27:14