web-dev-qa-db-ja.com

コンソールアプリケーションの実行ディレクトリを取得する方法

以下のコードを使用してコンソールアプリケーションのディレクトリを取得しようとしましたが、

Assembly.GetExecutingAssembly().Location

しかし、これはアセンブルの場所を教えてくれます。これは、アプリケーションを実行した場所とは異なる場合があります。

コンソールアプリケーションは、パラメーターなしでログを解析します。実行可能ファイルのフォルダー内のlogs/フォルダーに移動するか、logs/へのパスを指定すると、解析されます。

55
eugeneK

つかいます Environment.CurrentDirectory

現在の作業ディレクトリの完全修飾パスを取得または設定します。
(MSDN Environment.CurrentDirectoryプロパティ

string logsDirectory = Path.Combine(Environment.CurrentDirectory, "logs");

アプリケーションがc:\ Foo\Barで実行されている場合、logsDirectorycを指します。\Foo\Bar\logs

89
Stefan

これを使って :

System.Reflection.Assembly.GetExecutingAssembly().Location

それと組み合わせる

System.IO.Path.GetDirectoryName if all you want is the directory.
28
Sunny

最も安全な方法:

string temp = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);
6
dtsg

これは簡単なロギング方法です

using System.IO;
private static void logWrite(string filename, string text)
{
    string filepath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\" + filename;

    using (StreamWriter sw = File.AppendText(filepath))
    {
        sw.WriteLine(text);
        Console.WriteLine(text);
    }
}

使用法:

logWrite("Log.txt", "Test");
2
Donovan Phoenix