mono c#get application path

时间:2011-06-05 21:46:33

标签: c# mono

我希望得到我的应用程序的目录,它似乎与常规的c#?

不同

因为Path.GetDirectoryName(Application.ExecutablePath)无效。

2 个答案:

答案 0 :(得分:28)

一个正确的跨平台解决方案

Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)

请注意,Environment.CurrentDirectoryAssembly.GetExecutingAssembly().Location(更确切地说,它们的目录)在语义上都是错误的,即使它们通常 - 但并非总是 - 同一目录:

  • 当前目录是“工作目录”,可以在任何时间点进行更改,就像shell中的“cd”命令一样。
  • 执行程序集是包含当前正在运行的代码的程序集,可能与实际应用程序位于同一目录中,也可能不在同一目录中。例如,如果您的应用程序是“A.exe”,它具有依赖关系“B.dll”,而某些代码在B.dll中调用Assembly.GetExecutingAssembly(),则会导致“/path/to/B.dll”。

答案 1 :(得分:1)

尝试Assembly.GetExecutingAssembly().Location