我需要检索使用 mkbundle --static
创建的应用程序可执行文件的完整路径(直至目录)。这是我在 OSX 上测试的 CLI 应用程序,假设可执行文件位于 /usr/local/bin/
。
事情可能更复杂(但我真的不知道)因为我想从任何目录运行该实用程序,所以我将以上路径添加到$PATH
环境变量(在本例中,它已经存在)。
现在,假设应用程序在 ~/dir1/dir2/
处启动,并假设它打印 Application.StartupPath
。这会产生路径 ~/dir1/dir2/
。相反,我希望始终检索启动应用程序的真实目录,即/usr/local/bin/
。
有什么方法可以实现这一点(最好是与平台无关的方式)?
我使用配置了 Mono/.NET 4.5 和 C# 6.0 的 Xamarin Studio。
更新:获取 typeof(Program).Assembly.Location
也没有多大帮助。
我的意思是,当我只运行正常的应用程序可执行文件(在构建过程中生成)时,它运行良好。
但是,如果我运行一个使用 mkbundle --static
制作的包,Location
只给出可执行文件名称 App.exe
而没有任何优先路径。
可能它只是显示包内的相对路径。有什么办法可以获得包本身的路径吗?..
最佳答案
我发现唯一可靠的方法(虽然可能不是最快的方法)是通过 Process
:
Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName)
关于c# - 在 Mono C# CLI 应用程序中获取包的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34691124/