2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

C# で CurrentDirectory を取得する 検証してみた

Posted at

背景

開発環境で作成したバッチプロジェクトを他環境で動かした際に、カレントディレクトリの取得方法に問題がありうまく動かなかったため、カレントディレクトリの取得メソッドの検証してみる。

検証コード

以下のような簡易的なバッチの作成

logger.Info(System.AppDomain.CurrentDomain.BaseDirectory);
logger.Info(Directory.GetCurrentDirectory());
logger.Info(Directory.GetParent(Assembly.GetExecutingAssembly().Location));
logger.Info(Environment.CurrentDirectory);
logger.Info(System.IO.Path.GetDirectoryName(System.IO.Path.GetFullPath(Environment.GetCommandLineArgs()[0])));
logger.Info(System.IO.Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName));

検証方法

・タスクスケジューラで作成した簡易バッチの実行

検証結果

2022-07-13 12:31:59.2765 [INFO] C:\00_hata\PlayGound\Dirtest\bin\x86\Debug\
2022-07-13 12:31:59.2921 [INFO] C:\WINDOWS\system32
2022-07-13 12:31:59.3154 [INFO] C:\00_hata\PlayGound\Dirtest\bin\x86\Debug
2022-07-13 12:31:59.3154 [INFO] C:\WINDOWS\system32
2022-07-13 12:31:59.3274 [INFO] C:\00_hata\PlayGound\Dirtest\bin\x86\Debug
2022-07-13 12:31:59.3274 [INFO] C:\00_hata\PlayGound\Dirtest\bin\x86\Debug

以下は呼び出し元プログラムのルートディレクトリ
スケジューラの作業ディレクトリを取得する。
Directory.GetCurrentDirectory()
Environment.CurrentDirectory

以下は呼び出しプログラムのルートディレクトリを取得する。
System.AppDomain.CurrentDomain.BaseDirectory
Assembly.GetExecutingAssembly().Location)
System.IO.Path.GetDirectoryName(System.IO.Path.GetFullPath(Environment.GetCommandLineArgs()[0]))
System.IO.Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName)

まとめ

呼び出し元のルートディレクトリが必要か?
呼び出しバッチのルートディレクトリが必要か?
C# CurrentDirectory 取得と調べたら何かしら出てくるので違いを分かったうえで使うようにしよう

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?