2011-06-05 178 views

回答

26

一個正確的和跨平臺的解決方案將是

Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) 

注意兩個Environment.CurrentDirectoryAssembly.GetExecutingAssembly().Location(更確切地說,其目錄)在語義上是錯誤的,即使他們往往是 - 但並不總是 - 同一個目錄:

  • 當前目錄是「工作目錄」,可以隨時更改,例如shell中的「cd」命令。
  • 正在執行程序集是包含當前正在運行的代碼的程序集,可能與實際應用程序在同一個目錄中,也可能不在同一個目錄中。例如,如果您的應用程序是「A.exe」,它具有依賴項「B.dll」,並且某些代碼在B.dll中調用Assembly.GetExecutingAssembly(),則會導致「/path/to/B.dll」。
1

嘗試Assembly.GetExecutingAssembly().Location

+1

大會不給我任何東西,我應該包括什麼讓我獲得組裝? – flyboarder 2011-06-05 21:54:30

+1

'System.Reflection' – 2011-06-05 21:55:49

+0

嗯好生病給我一個嘗試謝謝! – flyboarder 2011-06-05 21:58:28