在 Linux 上可靠地获取捆绑可执行文件的位置

Reliably get location of bundled executable on Linux

我正在编写一个 C# 应用程序,它正在编译并与 Mono 的 mkbundle 捆绑在一起,然后是 运行。

我正在尝试访问可执行文件 运行 所在的文件夹,当我使用 ./example 从它所在的目录 运行 应用程序时,该文件夹有效。但是,当 运行 相对于另一个目录,例如 ../Builds/example,它 return 是错误的目录,而不是 return 从它执行的地方。

这一切在 Windows 上都能完美运行,但我也需要它在 Linux 上运行。

我之前试过的方法是:

所有这些 return 不正确的目录,而不是可执行文件的实际位置。

我找到了一个最可靠的方法来找到 mkbundle 可执行文件的路径,但是我不确定这是最佳解决方案。

Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName)