C# で実行可能パスを取得する
このチュートリアルでは、C# でコードの実行可能パスを取得する方法を紹介します。
C# の Assembly
クラスで実行可能パスを取得する
Assembly
クラスは、C# の共通言語ランタイム CLR アプリケーションの再利用可能なビルディングブロックであるアセンブリを表します。Assembly.GetEntryAssembly()
関数は、現在実行中のコードのアセンブリを取得するために使用されます。現在実行中のコードのパスは、文字列変数で現在の実行可能パスを返す Assembly.GetEntryAssembly().Location
プロパティを使用して取得できます。次のコード例を参照してください。
using System;
using System.IO;
using System.Reflection;
namespace executable_path {
class Program {
static void Main(string[] args) {
string execPath = Assembly.GetEntryAssembly().Location;
Console.WriteLine(execPath);
}
}
}
出力:
C:\Debug\destroy object.exe
上記のコードでは、C# の Assembly
クラスを使用して現在のコードの実行可能パスを表示しました。Assembly.GetEntryAssembly().Location
プロパティによって返された値を文字列変数 execPath
内に格納し、ユーザーに表示しました。
C# の AppDomain
クラスで実行可能パスを取得する
上記のメソッドは、実行可能ファイルの名前とともにパスを提供します。実行可能ファイルの名前なしでディレクトリの名前を取得したい場合は、C# で AppDomain
クラスを使用できます。AppDomain
クラスはアプリケーションドメインを表します。アプリケーションドメインは、アプリケーションが実行される分離された環境です。AppDomain.CurrentDomain
プロパティは、現在のアプリケーションのアプリケーションドメインを取得します。AppDomain.CurrentDomain.BaseDirectory
プロパティを使用して実行可能パスを取得できます。このプロパティは、現在のコードファイルの実行可能ファイルを文字列変数で含むディレクトリのパスを返します。次のコード例は、C# の AppDomain
クラスを使用して現在のコードの実行可能パスを取得する方法を示しています。
using System;
using System.IO;
using System.Reflection;
namespace executable_path {
class Program {
static void Main(string[] args) {
string execPath = AppDomain.CurrentDomain.BaseDirectory;
Console.WriteLine(execPath);
}
}
}
出力:
C:\Debug\
上記のコードでは、C# の AppDomain
クラスを使用して現在のコードの実行可能パスを表示しました。AppDomain.CurrentDomain.BaseDirectory
プロパティによって返された値を文字列変数 execPath
内に格納し、ユーザーに表示しました。このアプローチは、他の 2つのアプローチよりも最も簡単で、必要なコードが少ないため、推奨されます。
C# の Path
クラスで実行可能パスを取得する
Path
クラスは、C# のファイルパスを含む文字列に対してさまざまな操作を実行します。Path.GetDirectoryName()
関数は、パスで指定されたディレクトリの情報を取得できます。System.Reflection.Assembly.GetExecutingAssembly().CodeBase
プロパティを Path.GetDirectoryName()
関数の引数として使用して、現在のコードを含むディレクトリの名前を取得できます。次のコード例を参照してください。
using System;
using System.IO;
using System.Reflection;
namespace executable_path {
class Program {
static void Main(string[] args) {
string execPath =
Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().CodeBase);
Console.WriteLine(execPath);
}
}
}
出力:
file:\C:\Users\Maisam\source\repos\executable path\executable path\bin\Debug
上記のコードでは、C# の Path
クラスを使用して現在のコードの実行可能パスを表示しました。Path.GetDirectoryName()
関数によって返された値を文字列変数 execPath
内に格納し、ユーザーに表示しました。このアプローチでは、パスの先頭に file:\
文字列が含まれるパスが返されます。このアプローチは、前の 2つのアプローチよりも多くのコードを必要とするため、お勧めしません。
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn