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);
.....
}
问题 - 是否有 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);
.....
}