コンソールアプリで実行ファイルのパスの取得

C#でアプリケーションの存在するディレクトリのパスを取得するには以下のプロパティを利用する。

System.Windows.Forms.Application.StartupPath;

コンソールアプリではデフォルトではSystem.Windows.Formsが利用できない。
これを回避するには参照設定で"System.Windows.Forms"を参照設定に加えればいいらしいのだが、パスの参照をするだけでこれを加えるのはなんだか微妙。

と、いうことで"System.Windows.Forms"を利用せずに実行ファイルのディレクトリのパスを取得する方法。

FileInfo exePath = new FileInfo(Environment.CommandLine.Replace( "\"", "" ));
// "C:\foo\bar\baz.quux -i "C:\hoge\fuga\quux"の場合
// exePathには「C:\foo\bar\baz.quux -i C:\hoge\fuga\piyo」が入る

Console.WriteLine( exePath.Directory );
// この場合の出力は「C:\foo\bar」となる

参考

startuppathについて