web-dev-qa-db-ja.com

C#を使用して実行可能ファイルの絶対パスを取得しますか?

この擬似コードを見てください:

string exe_path = system.get_exe_path()
print "This executable is located in " + exe_path

上記のプログラムをビルドし、実行可能ファイルをC:/meow/に配置すると、現在の作業ディレクトリに関係なく、実行されるたびにThis executable is located in C:/meow/が出力されます。

C#を使用してこれを簡単に達成するにはどうすればよいですか?

66
user12163

MSDNには記事がありますSystem.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBaseを使用するように言っています;ディレクトリが必要な場合は、System.IO.Path.GetDirectoryNameその結果について。

または、より短い Application.ExecutablePath which「実行可能ファイル名を含む、アプリケーションを起動した実行可能ファイルのパスを取得する」ので、アプリケーションの起動方法によっては信頼性がわずかに低下する可能性があります。

97
Mark Rushakoff
AppDomain.CurrentDomain.BaseDirectory
43
Liquid Core
using System.Reflection;

string myExeDir = new FileInfo(Assembly.GetEntryAssembly().Location).Directory.ToString();
12
newb

「マニフェストを含むロードされたファイルのパスまたはUNCロケーションを取得します。」

参照: http://msdn.Microsoft.com/en-us/library/system.reflection.Assembly.location.aspx

Application.ResourceAssembly.Location
4
Mike de Klerk
var dir = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

私は最高評価の回答を求めて飛び込み、自分が期待したものを得られないことに気づきました。私が探していたものを見つけるためにコメントを読む必要がありました。

そのため、コメントにリストされている答えを投稿して、それにふさわしい露出を与えています。

3
user1

私の側では、フォームアプリケーションで使用しました:

String Directory = System.Windows.Forms.Application.StartupPath;

アプリケーションの起動パスを使用します。

1
Sébastien

コンソールアプリに.configファイルがあり、以下のようになっているとします。

Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName + "\\YourFolderName\\log4net.config";
1