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

问题描述 投票:0回答:9

看看这个伪代码:

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#
轻松完成此任务?

c# directory executable
9个回答
118
投票

MSDN 有一篇文章说要使用

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

或者,有更短的

Application.ExecutablePath
(在 WinForms 中),它“获取启动应用程序的可执行文件的路径,包括可执行文件名称”,因此这可能意味着它的可靠性稍差,具体取决于应用程序的启动方式。


68
投票
AppDomain.CurrentDomain.BaseDirectory

14
投票
using System.Reflection;

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

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

我跳入评分最高的答案,却发现自己没有得到我所期望的。我必须阅读评论才能找到我想要的东西。

因此,我发布了评论中列出的答案,以给予其应有的曝光度。


4
投票

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

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

Application.ResourceAssembly.Location

2
投票

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

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

2
投票

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

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

它采用应用程序启动路径。


2
投票

对我有用但不在上面的那个是

Process.GetCurrentProcess().MainModule.FileName


2
投票

如果您计划构建一个与任务计划程序一起使用的控制台应用程序,我建议使用这种方法:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.