以下のコードを使用してコンソールアプリケーションのディレクトリを取得しようとしましたが、
Assembly.GetExecutingAssembly().Location
しかし、これはアセンブルの場所を教えてくれます。これは、アプリケーションを実行した場所とは異なる場合があります。
コンソールアプリケーションは、パラメーターなしでログを解析します。実行可能ファイルのフォルダー内のlogs/
フォルダーに移動するか、logs/
へのパスを指定すると、解析されます。
つかいます Environment.CurrentDirectory
。
現在の作業ディレクトリの完全修飾パスを取得または設定します。
(MSDN Environment.CurrentDirectoryプロパティ )
string logsDirectory = Path.Combine(Environment.CurrentDirectory, "logs");
アプリケーションがc:\ Foo\Barで実行されている場合、logsDirectory
はcを指します。\Foo\Bar\logs。
これを使って :
System.Reflection.Assembly.GetExecutingAssembly().Location
それと組み合わせる
System.IO.Path.GetDirectoryName if all you want is the directory.
最も安全な方法:
string temp = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);
これは簡単なロギング方法です
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");