我尝试使用以下代码
获取控制台应用程序的目录Assembly.GetExecutingAssembly().Location
但是这个给了我汇编所在的位置。这可能与我执行应用程序的地方不同。
我的控制台应用程序解析没有参数的日志。它必须转到可执行文件夹中的logs/
文件夹,或者如果我给它一个logs/
的路径,它就会解析它。
答案 0 :(得分:88)
使用Environment.CurrentDirectory
。
获取或设置当前工作目录的完全限定路径 (MSDN Environment.CurrentDirectory Property)
string logsDirectory = Path.Combine(Environment.CurrentDirectory, "logs");
如果您的应用程序在 c中运行:\ Foo \ Bar logsDirectory
将指向 c:\ Foo \ Bar \ logs 。
答案 1 :(得分:28)
使用此:
System.Reflection.Assembly.GetExecutingAssembly().Location
将其与
结合使用System.IO.Path.GetDirectoryName if all you want is the directory.
答案 2 :(得分:6)
最安全的方式:
string temp = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);
答案 3 :(得分:2)
答案 4 :(得分:0)
这是一种简单的日志记录方法
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");