问题 - 是否有更好/正确的方法来获取应用程序的启动路径?
设置 -我有一个在 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);
.....
}