プログラム 技術

.Netで実行パスを取得する

.Net 8で実行パスを取得しようとしたところ.NetFrameworkとは若干違いがあったのでメモしておきます

System.Windows.Formsが使えない

System.Windows.Formsに含まれる【Application.ExecutablePath】が使えなかったので、調べてみたら色々なやり方がありました

// 出力結果:D:\work\CSharpTest\bin\Debug\net8.0\CSharpTest.dll
Assembly.GetEntryAssembly().Location;

// 出力結果:file:\D:\work\CSharpTest\bin\Debug\net8.0
Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);

// 出力結果:D:\work\CSharpTest\bin\Debug\net8.0\
AppDomain.CurrentDomain.BaseDirectory;

// 出力結果:D:\work\CSharpTest\bin\Debug\net8.0
Directory.GetCurrentDirectory();

// 出力結果:D:\work\CSharpTest\bin\Debug\net8.0
Directory.GetParent(Assembly.GetExecutingAssembly().Location);

// 出力結果:D:\work\CSharpTest\bin\Debug\net8.0
Environment.CurrentDirectory;

// 出力結果:D:\work\CSharpTest\bin\Debug\net8.0 
Path.GetDirectoryName(Path.GetFullPath(Environment.GetCommandLineArgs()[0]));

// 出力結果:D:\work\CSharpTest\bin\Debug\net8.0
Path.GetDirectoryName(Environment.ProcessPath)

上記のコードをビルドしてExeファイルを他の階層に移動させて実行してみます

// 出力結果:D:\net8.0\CSharpTest.dll
Assembly.GetEntryAssembly().Location;

// 出力結果:file:\D:\net8.0
Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);

// 出力結果:D:\net8.0\
AppDomain.CurrentDomain.BaseDirectory;

// 出力結果:D:\net8.0
Directory.GetCurrentDirectory();

// 出力結果:D:\net8.0
Directory.GetParent(Assembly.GetExecutingAssembly().Location);

// 出力結果:D:\net8.0
Environment.CurrentDirectory;

// 出力結果:D:\net8.0 
Path.GetDirectoryName(Path.GetFullPath(Environment.GetCommandLineArgs()[0]));

// 出力結果:D:\net8.0
Path.GetDirectoryName(Environment.ProcessPath)

上記のようにコードは違いますが、結果は変わらないものがいくつかありました。具体的に何が違うのかよくわからなかったのですが、以下のサイトだと【AppDomain.CurrentDomain.BaseDirectry】が妥当だそうです

参考サイト
【.Net】アプリのパスを取得する方法っていくつもあるけど何か違うの?【C#】 | ドクロモエ
【.Net】アプリのパスを取得する方法っていくつもあるけど何か違うの?【C#】 | ドクロモエ

続きを読む

会社紹介

私が所属しているアドバンスド・ソリューション株式会社(以下、ADS)は一緒に働く仲間を募集しています

会社概要
「技術」×「知恵」=顧客課題の解決・新しい価値の創造

この方程式の実現はADSが大切にしている考えで、技術を磨き続けるgeekさと、顧客を思うloveがあってこそ実現できる世界観だと思っています
この『love & geek』の精神さえあれば、得意不得意はno problem!
技術はピカイチだけど顧客折衝はちょっと苦手。OKです。技術はまだ未熟だけど顧客と知恵を出し合って要件定義するのは大好き。OKです
凸凹な社員の集まり、色んなカラーや柄の個性が集まっているからこそ、常に新しいソリューションが生まれています

ミッション
私たちは、テクノロジーを活用し、業務や事業の生産性向上と企業進化を支援します

ホームページ
アドバンスド・ソリューション株式会社
アドバンスド・ソリューション株式会社

アドバンスド・ソリューションは主にMicrosoft製品を使用して、企業の生産性向上に取り組んでいます。要件定義から導入 ...

サイトへ移動

お問い合わせ
お問い合わせ  | アドバンスド・ソリューション株式会社
お問い合わせ | アドバンスド・ソリューション株式会社

お問い合わせはこちら

-プログラム, 技術
-