获取可执行文件的绝对path,使用C#?

看看这个伪代码:

string exe_path = system.get_exe_path() print "This executable is located in " + exe_path 

如果我构build了上述程序并将可执行文件放置在C:/meow/ ,则将打印出This executable is located in C:/meow/ ,而不pipe当前的工作目录。

我怎么能轻松地使用C#来完成这个?

MSDN有一篇文章说,要使用System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase ; 如果您需要该目录,请使用该结果的System.IO.Path.GetDirectoryName

或者,有一个较短的Application.ExecutablePath “获取启动应用程序的可执行文件的path,包括可执行文件的名称”,这可能意味着它的可靠性稍差,这取决于应用程序的启动方式。

 AppDomain.CurrentDomain.BaseDirectory 
 using System.Reflection; string myExeDir = new FileInfo(Assembly.GetEntryAssembly().Location).Directory.ToString(); 

“获取包含清单的已加载文件的path或UNC位置”。

请参阅: http : //msdn.microsoft.com/zh-CN/library/system.reflection.assembly.location.aspx

 Application.ResourceAssembly.Location 
 var dir = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 

我跳进了最高评价的答案,发现自己没有得到我的预期。 我不得不阅读评论,find我正在寻找的东西。

出于这个原因,我发布了评论中列出的答案,给它应有的风险。

假设我有控制台应用程序中的.config文件,现在得到像下面。

 Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName + "\\YourFolderName\\log4net.config"; 

在我身边,我使用了一个表单应用程序:

 String Directory = System.Windows.Forms.Application.StartupPath; 

它需要应用程序的启动path。