使用C#获取可执行文件的绝对路径?

时间:2009-11-01 22:01:01

标签: c# directory executable

看看这个伪代码:

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

如果我构建上述程序并将可执行文件放在C:/meow/中,那么无论当前工作目录如何,它都会在每次运行时打印出This executable is located in C:/meow/

如何使用C#轻松完成此操作?

9 个答案:

答案 0 :(得分:97)

MSDN has an article说使用System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase;如果您需要该目录,请在该结果上使用System.IO.Path.GetDirectoryName

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

答案 1 :(得分:38)

AppDomain.CurrentDomain.BaseDirectory

答案 2 :(得分:12)

using System.Reflection;

string myExeDir = new FileInfo(Assembly.GetEntryAssembly().Location).Directory.ToString();

答案 3 :(得分:4)

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

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

Application.ResourceAssembly.Location

答案 4 :(得分:3)

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

我跳进了最高级别的答案,发现自己没有得到我的预期。我必须阅读评论才能找到我要找的东西。

出于这个原因,我发布了评论中列出的答案,以便为其提供应有的曝光度。

答案 5 :(得分:1)

假设我在控制台应用程序中有.config文件,现在变得如下所示。

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

答案 6 :(得分:1)

在我这边,我使用了表格应用程序:

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

它需要应用程序启动路径。

答案 7 :(得分:0)

对我有用但不在上面的是Process.GetCurrentProcess().MainModule.FileName

答案 8 :(得分:0)

如果您打算构建一个与 Task Scheduler 一起使用的控制台应用程序,我建议您使用这种方法:

var execDirectoryPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)?.Replace("file:\\", "");

这样,路径将适应您放置可执行文件的任何位置。