2009-06-02 170 views

回答

280

一種方法:

System.AppDomain.CurrentDomain.BaseDirectory 

另一種方式來做到這一點是:

System.IO.Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName) 
+0

啊,謝謝。必須以某種方式忽略AppDomain。我正在尋找它,實際上... – Joey 2009-06-02 12:34:05

+0

似乎無法在VS.Net 2010/WPF 4 – AndyD273 2011-08-19 19:32:52

+0

@ AndyD273:適用於我。你是否缺少`using`指令或程序集引用? – Helen 2011-08-28 18:45:27

3
String exePath = System.Reflection.Assembly.GetExecutingAssembly().GetModules()[0].FullyQualifiedName; 
string dir = Path.GetDirectoryName(exePath); 

試試這個!

+0

不漂亮,但工程。謝謝:-) – Joey 2009-06-02 08:46:19

24

這裏是另一個:

System.Reflection.Assembly.GetExecutingAssembly().Location 
7

您還可以使用命令的第一個參數線參數:

String exePath = System.Environment.GetCommandLineArgs()[0]

0

您也可以自由使用來自System.Windows.Forms的Application.StartupPath,但您必須爲System.Windows.Forms程序集添加引用!

3

試試這個。別忘了using System.Reflection

string baseDir = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 
1

我簡單地用string baseDir = Environment.CurrentDirectory;和它的工作給我。

好運

編輯:

我用來刪除這種類型的錯誤,但我更喜歡編輯,因爲我覺得這個答案幫助的人負點知道走錯了路。 :)我明白了上述解決方案是沒有用的,我把它改成string appBaseDir = System.AppDomain.CurrentDomain.BaseDirectory; 以其他方式獲得它是:

1. string baseDir = 
    System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); 
2. String exePath = System.Environment.GetCommandLineArgs()[0]; 
3. string appBaseDir = System.IO.Path.GetDirectoryName 
    (System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName); 

好運

0

我嘗試這樣做:

label1.Content = Directory.GetCurrentDirectory(); 

,並得到也是目錄。

相關問題