C# で実行可能パスを取得する

Muhammad Maisam Abbas 2024年2月16日
  1. C# の Assembly クラスで実行可能パスを取得する
  2. C# の AppDomain クラスで実行可能パスを取得する
  3. C# の Path クラスで実行可能パスを取得する
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つのアプローチよりも多くのコードを必要とするため、お勧めしません。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

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

関連記事 - Csharp Path