8

そこで、「scripts」というサブフォルダ内のスクリプトを読み取る必要のあるアプリケーションを作成しようとしています。私が問題を抱えている私のコード:

string script = Console.ReadLine();
string path = Directory.GetCurrentDirectory();
string sciptpath  = path + "/scripts/" + script;

これはWindowsで正常に機能します。ただし、Linux(Mono Runtimeを使用して実行)では、実行可能ファイルのディレクトリではなく、現在のユーザーのホームディレクトリに移動します。これはバグですか?そして、誰かが回避策を提案できますか?

4

1 に答える 1

11

「修正」が必要なわけではなく、現在のディレクトリがあなたが思っているものではないということです。現在のディレクトリは、相対パスの「フォーカスがある」ディレクトリです。EXE がどこにあるかに関係なく、現在のディレクトリは別の場所にある可能性があり、実行中に変更される可能性さえあります。

あなたが望むものは:

string path = Path.GetDirectoryName(Application.ExecutablePath);
于 2012-10-16T13:54:25.423 に答える