mono c#get application path

fly*_*der 14 c# mono

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

因为Path.GetDirectoryName(Application.ExecutablePath)不工作.

And*_*Dog 29

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

Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)
Run Code Online (Sandbox Code Playgroud)

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

  • 当前目录是"工作目录",可以在任何时间点来改变,像"CD"命令,在一个外壳程序.
  • 执行器组件是组装包含当前正在运行的代码,并且可以是或可以不是在相同的目录中的实际应用.例如,如果您的应用程序是"A.exe",它具有依赖关系"B.dll",并且某些代码在B.dll调用中Assembly.GetExecutingAssembly(),则会导致"/path/to/B.dll".