协慌网

登录 贡献 社区

如何在. NET 控制台应用程序中获取应用程序的路径?

如何在控制台应用程序中找到应用程序的路径?

Windows 窗体中 ,我可以使用Application.StartupPath来查找当前路径,但这似乎在控制台应用程序中不可用。

答案

System.Reflection.Assembly.GetExecutingAssembly()Location 1

如果您想要的只是目录,请将它与System.IO.Path.GetDirectoryName结合使用。

1 根据 Mr.Mindor 的评论:
System.Reflection.Assembly.GetExecutingAssembly().Location返回执行程序集当前所在的位置,可能是也可能不是程序集在不执行时所在的位置。对于卷影复制程序集,您将获得临时目录中的路径。 System.Reflection.Assembly.GetExecutingAssembly().CodeBase将返回程序集的 “永久” 路径。

您可以使用以下代码获取当前的应用程序目录。

AppDomain.CurrentDomain.BaseDirectory

您有两种方法可以找到应用程序的目录,您选择的目录取决于您的目的。

// to get the location the assembly is executing from
//(not necessarily where the it normally resides on disk)
// in the case of the using shadow copies, for instance in NUnit tests, 
// this will be in a temp directory.
string path = System.Reflection.Assembly.GetExecutingAssembly().Location;

//To get the location the assembly normally resides on disk or the install directory
string path = System.Reflection.Assembly.GetExecutingAssembly().CodeBase;

//once you have the path you get the directory with:
var directory = System.IO.Path.GetDirectoryName(path);