C#におけるアセンブリのパスを取得するコード例
C#におけるアセンブリのパスを取得する方法
**C#**において、実行中のコードが属するアセンブリのパスを取得するには、リフレクションを利用します。リフレクションは、実行時にプログラムのメタデータにアクセスするための機能を提供します。
具体的な方法
Assembly クラスを使用する:
Assembly.GetExecutingAssembly()
メソッドは、現在実行中のアセンブリを取得します。Assembly.GetEntryAssembly()
メソッドは、アプリケーションのエントリポイントとなるアセンブリを取得します。
Location プロパティを利用する:
コード例
using System.Reflection;
namespace MyNamespace
{
class Program
{
static void Main()
{
// 現在実行中のアセンブリのパスを取得
string currentAssemblyPath = Assembly.GetExecutingAssembly().Location;
Console.WriteLine("Current Assembly Path: " + currentAssemblyPath);
// エントリポイントのアセンブリのパスを取得
string entryAssemblyPath = Assembly.GetEntryAssembly().Location;
Console.WriteLine("Entry Assembly Path: " + entryAssemblyPath);
}
}
}
日本語解説
現在実行中のアセンブリのパスを取得する
using System.Reflection;
namespace MyNamespace
{
class Program
{
static void Main()
{
// 現在実行中のアセンブリのパスを取得
string currentAssemblyPath = Assembly.GetExecutingAssembly().Location;
Console.WriteLine("Current Assembly Path: " + currentAssemblyPath);
}
}
}
Location
: アセンブリのファイルパスを取得します。
エントリポイントのアセンブリのパスを取得する
using System.Reflection;
namespace MyNamespace
{
class Program
{
static void Main()
{
// エントリポイントのアセンブリのパスを取得
string entryAssemblyPath = Assembly.GetEntryAssembly().Location;
Console.WriteLine("Entry Assembly Path: " + entryAssemblyPath);
}
}
}
AppDomain.CurrentDomain.BaseDirectory プロパティ
- 説明: アプリケーションドメインのベースディレクトリを取得します。通常、アセンブリが配置されているディレクトリと同じです。
string baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
Environment.CurrentDirectory プロパティ
- 説明: 現在の実行中のプロセスが実行されているディレクトリを取得します。
string currentDirectory = Environment.CurrentDirectory;
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
- 説明:
Assembly.GetExecutingAssembly().Location
で取得したアセンブリのパスから、ディレクトリ名のみを抽出します。
string assemblyDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
ConfigurationManager.AppSettings["AssemblyPath"] (app.configまたはweb.configを使用する場合)
- 説明:
app.config
またはweb.config
ファイルで設定したアセンブリのパスを取得します。
string assemblyPath = ConfigurationManager.AppSettings["AssemblyPath"];
c# .net reflection