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

弗洛雷德

我想创建一个由Windows Task Scheduler运行的.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文件时,得到以下输出:手动运行

当我使用Windows Task Scheduler运行.exe文件时,得到以下输出:Task Scheduler image

我想知道的是:我应该使用什么代码来获取.exe文件所在目录的路径?

为什么返回临时文件夹的路径?

弗洛雷德

由于这个问题,我找到了答案:https : //github.com/dotnet/runtime/issues/13051

您必须使用: Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在.NET控制台应用程序中获取应用程序的路径?

如何为.NET Core控制台应用程序创建exe?

如何在 .NET 控制台应用程序中获取路径

如何在控制台应用程序 (.Net Core 2.2) 中使用带有 DinkToPdf (wkhtmltopdf) 的 .css 文件?

如何从提供程序(C#.NET Core控制台应用程序)获取Args?

如何从.Net Core控制台应用程序中获取版权,版本,公司等信息?

如何在.NET Core控制台应用程序中获取MacOS用户名?

如何在 .Net Core 控制台应用程序中引用 .Net Core 库

如何使.net Core 3.1控制台应用程序中的控制台记录器正常工作

启动控制台应用程序时.NET Core 3.0获取无效的runtimeconfig.json

如何在控制台应用程序 .NET Core (C#) 中创建一个打开文件对话框?

生成.NET Core控制台应用程序以输出EXE

如何使用Visual Studio 2019社区创建.NET Core 3控制台应用程序?

如何从命令行运行.NET Core控制台应用程序

如何在Linux中从.NET Core 2.0创建可执行控制台应用程序?

如何在.NET Core控制台应用程序中使用Microsoft.Extensions.DependencyInjection?

.NET Core控制台应用程序中如何处理范围服务实例?

如何修改 Visual Studio 的 C# .Net Core 控制台应用程序项目模板

如何在Linux上运行.NET Core控制台应用程序

如何在OSX上分发.NET Core 2.0控制台应用程序

.NET Core控制台应用程序,如何在每个环境中配置appSettings?

如何在.NET Core控制台应用程序中设置DI容器?

.NET Core控制台应用程序如何部署到Kubernetes?

如何在.NET Core控制台应用程序中实现MVVM?

.NET Core 3.0控制台应用程序无法读取文件,引发UnauthorizedAccessException

访问由 .NET Core 控制台应用程序在 Docker 中生成的日志文件

如何从.NET生成独立的控制台应用程序

如何加载.net核心控制台应用程序中的文件夹中的程序集

如何检查我的.NET Core控制台应用程序是作为独立应用程序运行(通过运行myapp.exe)还是使用dotnet myapp.dll运行?