実行している自分自身のファイル名を得る §
実行している時、実行している実行ファイルのファイル名を得る方法はあるのでしょうか?
あります。
実行中のアセンブリはAssembly.GetExecutingAssembly()で取得できます。
取得したオブジェクトのLocationプロパティを見るとそのファイルのフルパスが格納されています。
罠の数々 §
- Locationプロパティの動的に構成されたアセンブリの場合、値はないかもしれないし、ネットから得た場合はURLかもしれない
- .NET Coreまたは.NET 5以降の場合、実行ファイルの拡張子はEXEではなくDLLになっている。注意しよう。.NET Frameworkで実行するとEXEのファイル名が取れるはずだ。
参考リンク §
Assembly.GetExecutingAssembly メソッド
Assembly.Location プロパティ
AssemblyクラスにはGetExecutingAssembly以外にもアセンブリを取得するAPIがあって、実行中のアセンブリ以外にも取得できるものがある。どんなAPIで何が取得できるか、上記リンクから辿って確認してみよう。
また、Location プロパティ以外にどんな情報を取得できるか上記リンクを辿って調べてみよう。
リポジトリ §
https://github.com/autumn009/cshowto
MyExeFileName §
using System;
using System.Reflection;
class Program
{
static void Main()
{
var fileName = Assembly.GetExecutingAssembly().Location;
Console.WriteLine(fileName);
}
}
実行結果 (パスの詳細は実行する環境ごとに変わる)
C:\~~~\MyExeFileName\bin\Debug\net5.0\MyExeFileName.dll