2011-06-05 126 views

回答

26

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

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

注意两个Environment.CurrentDirectoryAssembly.GetExecutingAssembly().Location(更确切地说,其目录)在语义上是错误的,即使他们往往是 - 但并不总是 - 同一个目录:

  • 当前目录是“工作目录”,可以随时更改,例如shell中的“cd”命令。
  • 正在执行程序集是包含当前正在运行的代码的程序集,可能与实际应用程序在同一个目录中,也可能不在同一个目录中。例如,如果您的应用程序是“A.exe”,它具有依赖项“B.dll”,并且某些代码在B.dll中调用Assembly.GetExecutingAssembly(),则会导致“/path/to/B.dll”。
1

尝试Assembly.GetExecutingAssembly().Location

+1

大会不给我任何东西,我应该包括什么让我获得组装? – flyboarder 2011-06-05 21:54:30

+1

'System.Reflection' – 2011-06-05 21:55:49

+0

嗯好生病给我一个尝试谢谢! – flyboarder 2011-06-05 21:58:28