我需要檢索使用mkbundle --static
製作的應用程序可執行文件的完整路徑(至目錄)。這是一個我在OSX上測試的CLI應用程序,假設可執行文件駐留在/usr/local/bin/
。在Mono C#CLI應用程序中獲取包的路徑
的事項可能進一步複雜化(但我真的不知道),因爲我想運行在任何目錄的效用,所以我加入$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
,而不包含任何先前的路徑。
可能它只是顯示包內的相對路徑。有沒有什麼方法可以讓我得到的路徑,束本身..
感謝馬特。如果我運行'mono app.exe',但是運行使用'mkbundle --static'創建的包時不起作用。在這種情況下,它只顯示'app.exe',或許它是相對於軟件包的路徑?.. 仍然無法弄清楚如何獲取包的路徑,或者根本不可能。 – wh1t3cat1k
我改變了問題主體以反映對問題的新理解。你知道什麼可以幫助我的情況? – wh1t3cat1k
對不起,不知道。我懷疑你將不得不使用[native api](http://stackoverflow.com/questions/1023306/finding-current-executables-path-without-proc-self-exe)來查找當前可執行文件的路徑。 –