アプリケーションフォルダのパスを取得する最適な方法 質問する

アプリケーションフォルダのパスを取得する最適な方法 質問する

アプリケーション フォルダーのパスを取得する方法はいくつかあるようです。

  1. Application.StartupPath
  2. System.IO.Path.GetDirectoryName( System.Reflection.Assembly.GetExecutingAssembly().Location)
  3. AppDomain.CurrentDomain.BaseDirectory
  4. System.IO.Directory.GetCurrentDirectory()
  5. Environment.CurrentDirectory
  6. System.IO.Path.GetDirectoryName( System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)
  7. System.IO.Path.GetDirectory(Application.ExecutablePath)

状況に応じて最適な方法は何ですか?

ベストアンサー1

AppDomain.CurrentDomain.BaseDirectoryおそらく、アプリケーションのインストール ディレクトリを基準とした場所にあるファイルにアクセスする場合に最も便利です。

ASP.NET アプリケーションでは、これはアプリケーションのルート ディレクトリであり、通常は必要な bin サブフォルダーではありません。クライアント アプリケーションでは、メインの実行可能ファイルを含むディレクトリになります。

VSTO 2005 アプリケーションでは、これは Excel 実行可能ファイルへのパスではなく、アプリケーションの VSTO マネージ アセンブリを含むディレクトリになります。

その他は、環境に応じて異なるディレクトリを返す場合があります。たとえば、@Vimvq1987 の回答を参照してください。

CodeBaseファイルが見つかった場所であり、http://で始まるURLである可能性があります。その場合、Locationアセンブリのダウンロードキャッシュである可能性があります。CodeBaseは、アセンブリに対して設定されるとは限りません。ギャック

更新最近では(.NET Core、.NET Standard 1.3+、または.NET Framework 4.6+)、AppContext.BaseDirectoryではなくを使用する方が適切ですAppDomain.CurrentDomain.BaseDirectory。どちらも同等ですが、複数の AppDomain はサポートされなくなりました

おすすめ記事