以下のようにカレントディレクトリを取得してファイルを読み込んでいますが
string dir = Directory.GetCurrentDirectory();
カレントディレクトリは移動していることがあると聞きました。
それは、Directory.SetCurrentDirectory()を呼ばなければいいだけの問題でしょうか。
それとも、意図せず移動しているものなのでしょうか。
移動しているなら、それはどんなときに移動するんでしょうか。
意図せず,というのはあり得るでしょう。
プログラマがカレントディレクトリが変更されることを知らずに変更するコードを呼んだ
場合などであり得ますから。
ただし,カレントディレクトリが勝手に移動することはないです。
>意図せず,というのはあり得るでしょう。
>プログラマがカレントディレクトリが変更されることを知らずに変更するコードを呼んだ
>場合などであり得ますから。
むぅ~、難しいですね。
現在、共通処理を作成していてその処理が呼ばれるまでに
カレントディレクトリが移動していることがあるかどうかで
迷ってます。
カレントディレクトリを移動したら、元に戻してとも
いえないですし、固定ディレクトリを設定か何かから
とってきた方が無難ですね。
カレントディレクトリに頼らないようにするのがよいです。
代わりに,Assembly.GetEntryAssembly().Locationなどを使うようにします。
>現在、共通処理を作成していてその処理が呼ばれるまでに
>カレントディレクトリが移動していることがあるかどうかで
>迷ってます。
起動時に、何か変数に格納しておくのは出来ないのでしょうか?
でなければ、カレントディレクトリのように移動しないディレクトリにするしかないで
すね。
たとえば、YuOさんのようにEXEのあるディレクトリにするとか、Application Dataのデ
ィレクトリにするとか。
YuOさん、Blueさん、ありがとうございます。
実行ファイルのパスはGetEntryAssembly()で取れるんですね。
↓のように取得することにしました。
Assembly.GetEntryAssembly().CodeBase