如何使用C#找出我的控制台应用程序运行的目录?

时间:2008-09-18 21:43:30

标签: c# .net

如何使用C#找出我的控制台应用程序运行的目录?

8 个答案:

答案 0 :(得分:142)

获取.exe文件所在的目录:

AppDomain.CurrentDomain.BaseDirectory

获取当前目录:

Environment.CurrentDirectory

答案 1 :(得分:11)

根据授予您的应用程序的权限,shadow copying是否生效以及其他调用和部署选项,不同的方法可能会起作用或产生不同的结果,因此您必须明智地选择您的武器。话说回来, 对于在其所在的机器上本地执行的完全受信任的控制台应用程序,以下所有结果将产生相同的结果:

Console.WriteLine( Assembly.GetEntryAssembly().Location );
Console.WriteLine( new Uri(Assembly.GetEntryAssembly().CodeBase).LocalPath );
Console.WriteLine( Assembly.GetEntryAssembly().Location );
Console.WriteLine( Environment.GetCommandLineArgs()[0] );
Console.WriteLine( Process.GetCurrentProcess().MainModule.FileName );

您需要查阅上述成员的文档,以查看所需的确切权限。

答案 2 :(得分:5)

Path.GetDirectoryName(Assembly.GetExecutingAssembly()位置)

答案 3 :(得分:3)

在.NET中,您可以使用System.Environment.CurrentDirectory来获取启动进程的目录 System.Reflection.Assembly.GetExecutingAssembly().Location将告诉您当前正在执行的程序集的位置(如果当前正在执行的程序集是从与进程启动的程序集的位置不同的某处加载的,那么这只是有趣的。)

答案 4 :(得分:1)

在Windows上(不确定Unix等),它是命令行中的第一个参数。

在argv *的C / C ++第一项中

WinAPI - GetModuleFileName(NULL,char *,MAX_PATH)

答案 5 :(得分:1)

Application.StartUpPath;

答案 6 :(得分:0)

假设您的.Net核心控制台应用程序项目名称为DataPrep。

获取项目基础目录:

Console.WriteLine(Environment.CurrentDirectory);

输出:〜​​DataPrep \ bin \ Debug \ netcoreapp2.2

Get Project .csproj file directory:
string ProjectDirPath = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, @"..\..\..\"));
Console.WriteLine(ProjectDirPath);

输出:〜DataPrep \

答案 7 :(得分:0)

<head> <script src="/js/manifest.js" data-turbolinks-track="true"></script> <script src="/js/app.js" data-turbolinks-track="true"></script> <scrip src="/js/vendor.js" data-turbolinks-track="true"></script> </head> 用于.net5。