この擬似コードを見てください:
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#
を使用してこれを簡単に達成するにはどうすればよいですか?
MSDNには記事があります はSystem.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase
を使用するように言っています;ディレクトリが必要な場合は、System.IO.Path.GetDirectoryName
その結果について。
または、より短い Application.ExecutablePath
which「実行可能ファイル名を含む、アプリケーションを起動した実行可能ファイルのパスを取得する」ので、アプリケーションの起動方法によっては信頼性がわずかに低下する可能性があります。
AppDomain.CurrentDomain.BaseDirectory
using System.Reflection;
string myExeDir = new FileInfo(Assembly.GetEntryAssembly().Location).Directory.ToString();
「マニフェストを含むロードされたファイルのパスまたはUNCロケーションを取得します。」
参照: http://msdn.Microsoft.com/en-us/library/system.reflection.Assembly.location.aspx
Application.ResourceAssembly.Location
var dir = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
私は最高評価の回答を求めて飛び込み、自分が期待したものを得られないことに気づきました。私が探していたものを見つけるためにコメントを読む必要がありました。
そのため、コメントにリストされている答えを投稿して、それにふさわしい露出を与えています。
私の側では、フォームアプリケーションで使用しました:
String Directory = System.Windows.Forms.Application.StartupPath;
アプリケーションの起動パスを使用します。
コンソールアプリに.configファイルがあり、以下のようになっているとします。
Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName + "\\YourFolderName\\log4net.config";