[解決済み] アプリケーションフォルダのパスを取得する最適な方法
質問
アプリケーションフォルダのパスを取得する方法があるようですが、どのようにすればよいですか?
-
Application.StartupPath
-
System.IO.Path.GetDirectoryName( System.Reflection.Assembly.GetExecutingAssembly().Location)
-
AppDomain.CurrentDomain.BaseDirectory
-
System.IO.Directory.GetCurrentDirectory()
-
Environment.CurrentDirectory
-
System.IO.Path.GetDirectoryName( System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)
-
System.IO.Path.GetDirectory(Application.ExecutablePath)
状況に応じて、どのような方法があるのでしょうか?
解決方法は?
AppDomain.CurrentDomain.BaseDirectory
は、アプリケーションのインストールディレクトリから相対的な場所にあるファイルにアクセスするのに一番便利でしょう。
ASP.NETアプリケーションでは、binサブフォルダではなく、アプリケーションルートディレクトリになります - おそらく通常必要なものです。クライアントアプリケーションでは、メインの実行ファイルを含むディレクトリになります。
VSTO 2005アプリケーションでは、アプリケーションのVSTOマネージド・アセンブリを含むディレクトリとなり、例えばExcel実行ファイルへのパスではありません。
その他は、環境に応じて異なるディレクトリを返すかもしれません。例えば、@Vimvq1987 の回答を参照してください。
CodeBase
はファイルが見つかった場所であり、http:// で始まる URL である場合もあります。この場合
Location
は、おそらくアセンブリのダウンロード・キャッシュになります。のアセンブリには CodeBase が設定されていることは保証されません。
GAC
.
アップデイト
最近(.NET Core、.NET Standard 1.3+ または .NET Framework 4.6+)は、.NET Framework 4.6+を使用する方がよいでしょう。
AppContext.BaseDirectory
よりも
AppDomain.CurrentDomain.BaseDirectory
. どちらも等価ですが
複数のAppDomainはサポートされなくなりました
.
関連
-
[解決済み】ORA-01008: すべての変数がバインドされていません。これらはバインドされています。
-
[解決済み] C#で文字列のエンコーディングを手動で指定せずに、一貫性のあるバイト表現を得るには?
-
[解決済み] C#のオートプロパティに初期値を与える最良の方法は何ですか?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] 特定のプロパティに対するLINQのDistinct()
-
[解決済み] .NETコンソールアプリケーションでアプリケーションのパスを取得するにはどうすればよいですか?
-
[解決済み] C#で文字を繰り返し表示する最適な方法
-
[解決済み] .NETでapp.configやweb.configから設定を読み込む
-
[解決済み] コードが含まれるアセンブリのパスを取得するにはどうすればよいですか?
-
[解決済み] Windowsフォームアプリケーションで、アプリケーションの設定を保存するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】WebForms UnobtrusiveValidationModeは、jqueryのScriptResourceMappingを必要とする
-
[解決済み】トランスポート接続からデータを読み取れない:既存の接続は、リモートホストによって強制的に閉じられました。
-
[解決済み】非静的メソッドはターゲットを必要とする
-
[解決済み】リソースの読み込みに失敗した:ステータス500(内部サーバーエラー)のサーバーの応答)
-
[解決済み】なぜこのコードはInvalidOperationExceptionを投げるのですか?
-
[解決済み】MetadataException: 指定されたメタデータ・リソースをロードできない
-
[解決済み】Swashbuckle/Swagger + ASP.Net Core: "Failed to load API definition" (API定義の読み込みに失敗しました
-
[解決済み] 2つのリストを結合する
-
[解決済み】インデックスが範囲外でした。コレクションパラメータname:indexのサイズより小さく、非負でなければなりません。
-
[解決済み] enumを列挙するには