私のアプリでは、いくつかの構成ファイルをアセンブリ (exe) と共に xml に保存し、処理目的でその他の一時ファイルを保存します。
".\\"との奇妙な点を見つけましApplication.StartupPathた。
使ってきました
String configPath = ".\\config.xml";
OpenFIleDialog他のフォルダーのいくつかのファイルを開くために呼び出すまでは正常に動作し、上記のステートメントは失敗しました。どうやら「.\」は「CurrentDirectory」を参照しており、別のフォルダーを参照するたびに変更されます。
ある時点で、私は使用していました
String configPath = Path.Combine(Application.StartupPath + "config.xml");
ある時点で、 を使用して別のフォルダーからこのアセンブリを実行する必要があるときに、状況がProcess.Start()悪化し始めます。どうやら作業ディレクトリが適切に設定されておらず、Application.StartupPath実際には、アセンブリが実行されているディレクトリではなく、作業ディレクトリを参照していると思われます。したがって、ProcessInfo を使用して、作業ディレクトリをアセンブリのディレクトリに設定する必要があります。VSTOを書いていたときも、これに問題がありました。
だから、私の質問は、アセンブリが実行されている現在のディレクトリを取得するための最良の、最も簡単で最も確実な方法は何ですか?
編集:アセンブリが存在するディレクトリを取得するつもりでした
編集: MSDN on AppDomain.BaseDirectoryによると、実行時に変更される可能性があるようですが、これは私が望んでいないことです(明確にするために、 BaseDirectory の変更を許可したくないということではなく、変更されているかどうかを確認せずに取得します)
編集:関連する質問がずっと前に投稿されたことに気付きました。実行中のアプリの現在のディレクトリが変更される原因は何ですか?
答えてくれてありがとう。