.NETコンソールアプリケーションでアプリケーションのパスを取得するにはどうすればよいですか?

コンソールアプリケーションでアプリケーションのパスを見つけるにはどうすればいいですか?

Windows Forms]1では、Application.StartupPathを使って現在のパスを見つけることができますが、コンソールアプリケーションではこれが使えないようです。

ソリューション

System.Reflection.Assembly.GetExecutingAssembly().Location1

ディレクトリが欲しいだけなら、System.IO.Path.GetDirectoryNameと組み合わせてください。

1※Mindor氏のコメントによると、以下のようになります。 System.Reflection.Assembly.GetExecutingAssembly().Location は、実行中のアセンブリが現在置かれている場所を返しますが、これは、実行していないときにアセンブリが置かれている場所である場合もあれば、そうでない場合もあります。アセンブリをシャドーコピーしている場合は、テンポラリディレクトリのパスを取得します。System.Reflection.Assembly.GetExecutingAssembly().CodeBaseは、アセンブリの「恒久的な」パスを返します。

解説 (18)

以下のコードで、現在のアプリケーションのディレクトリを取得することができます。

AppDomain.CurrentDomain.BaseDirectory
解説 (6)

しようと思っているかもしれません。

System.IO.Path.GetDirectoryName(
    System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)
解説 (0)