如何获取控制台应用程序的执行目录

时间:2012-06-12 09:19:42

标签: c# .net filepath

我尝试使用以下代码

获取控制台应用程序的目录
Assembly.GetExecutingAssembly().Location

但是这个给了我汇编所在的位置。这可能与我执行应用程序的地方不同。

我的控制台应用程序解析没有参数的日志。它必须转到可执行文件夹中的logs/文件夹,或者如果我给它一个logs/的路径,它就会解析它。

5 个答案:

答案 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)

Scott Hanselman 有一个 blog post,其内容如下:

MPI_Allgather

他在 .NET Core 3.1 中使用,但是,我正在运行 .NET 4.8 并且它对我有用。

答案 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");