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

13 浏览
0 Comments

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

这个问题已经在这里有了答案:

如何在.NET控制台应用程序中获取应用程序路径?

我正在编写一个使用Mono的mkbundle编译和打包的C#应用程序,然后运行。

我尝试访问可执行文件运行的文件夹,当我从相同目录下使用./example来运行应用程序时,它可以正常工作。但是,当相对于另一个目录像../Builds/example这样运行时,它返回错误的目录,而不是实际的目录。

所有这些在Windows上都运作良好,但我也需要它在Linux上工作。

我之前尝试过的方法包括:

  • AppDomain.Current.BaseDirectory
  • Path.GetDirectoryName(Assembly.ExecutingAssembly().Location)(也尝试了EntryAssembly

所有这些都返回错误的目录,而不是实际可执行文件的位置。

admin 更改状态以发布 2023年5月21日
0
0 Comments

我找到了一种大多数情况下可靠的方法来找到mkbundle可执行文件的路径,但我不太确定这是否是最优解决方案。

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

0