如何获取.Net Core控制台应用程序的.exe文件所在目录的路径?

9
我想创建一个在Windows任务计划程序中运行的.Net Core控制台应用程序。在这个控制台应用程序中,我想要找到该应用的.exe文件所在目录的路径。
我通过在命令提示符中运行以下代码来发布应用以创建.exe文件: dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true 我认为这可能与下面概述的奇怪行为有关。
我遇到的问题是,当我运行.exe文件时,得到的路径并不是其所在文件夹的路径。
为了证明这一点,我编写了这个控制台应用程序:
//program.cs

using System;
using System.Diagnostics;
using System.IO;
using System.Reflection;

namespace PathTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Write(Directory.GetCurrentDirectory());

            Write(Assembly.GetExecutingAssembly().Location);

            Write(Assembly.GetExecutingAssembly().CodeBase);

            Write(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location));

            Write(AppDomain.CurrentDomain.BaseDirectory);

            Write(Environment.GetCommandLineArgs()[0]);

            Write(Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase));

            Write(Process.GetCurrentProcess().MainModule.FileName);

            Write(new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath);

            Console.ReadKey();
        }

        readonly static Action<string> Write = (str) =>
        {
            Console.WriteLine(str);
            Console.WriteLine("");
        };
    }
}

当我调试这个程序时,我得到了这个输出:debug image 当我运行.exe文件时,我得到了这个输出:manual run 当我使用Windows任务计划程序运行.exe文件时,我得到了这个输出:task scheduler image 我想知道的是:应该使用什么代码来获取.exe文件所在目录的路径?为什么返回一个临时文件夹的路径?
1个回答

9

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接