Dotnet Core - 获取应用程序的启动路径



问题 - 是否有更好/正确的方法来获取应用程序的启动路径?

设置 -我有一个在 Linux Debian docker 镜像中运行的控制台应用程序。我正在使用--runtime linux-x64命令行开关构建应用程序,并正确设置了所有运行时标识符。我希望应用程序的行为是相同的,无论是通过调用dotnet MyApplication.dll还是./MyApplication启动它,但它们不是。

罪魁祸首代码 -我在引用的应用程序目录下方的文件夹中部署了文件,因此我执行以下操作来获取我认为的启动路径。我读过各种文章,说这是获得我想要的东西的正确方法,它的工作原理取决于我如何启动它。

using var processModule = Process.GetCurrentProcess().MainModule;
var basePath = Path.GetDirectoryName(processModule?.FileName);

使用 comand 启动此功能时dotnet MyApplication.dll上述代码路径/usr/share/dotnet

使用命令启动此命令时./MyApplication.dll

路径将/app

我理解为什么使用dotnet会有所不同,因为它是运行我的代码的进程,但这又是出乎意料的。

鉴于当前环境,对我应该使用的任何帮助将不胜感激。最终,我需要控制台应用程序启动时收集的路径。

感谢您的帮助。

这段代码应该有效:

public static IConfiguration LoadConfiguration()
{
var assemblyDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
.....
}

最新更新