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

Dotnet Core - Get the application's launch path

问题 - 是否有 better/right 获取应用程序启动路径的方法?

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

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

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

使用命令 dotnet MyApplication.dll 启动时,上面的代码路径是 /usr/share/dotnet

当使用命令 ./MyApplication.dll 启动它时,路径是 /app

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

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

感谢您的帮助。

此代码应该有效:

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

}