如何找出我的控制台应用程序正在使用C#运行的目录?
Answers:
要获取.exe文件所在的目录:
AppDomain.CurrentDomain.BaseDirectory
要获取当前目录:
Environment.CurrentDirectory
System.AppContext.BaseDirectory。
根据授予您的应用程序的权限(无论影象复制是否有效以及其他调用和部署选项),不同的方法可能起作用或产生不同的结果,因此您必须明智地选择武器。话虽如此,对于在其所驻留的计算机上本地执行的完全受信任的控制台应用程序,以下所有内容将产生相同的结果:
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 );
您将需要查阅上述成员的文档,以查看所需的确切权限。
Path.GetDirectoryName(Assembly.GetExecutingAssembly()。Location)
在.NET中,您可以System.Environment.CurrentDirectory用来获取启动过程的目录。
System.Reflection.Assembly.GetExecutingAssembly().Location会告诉您当前正在执行的程序集的位置(只有当当前正在执行的程序集是从不同于进程开始的程序集位置的其他位置加载时,这才很有趣)。
在Windows(不确定Unix等)上,它是命令行中的第一个参数。
在argv *中的C / C ++激发项中
WinAPI-GetModuleFileName(NULL,char *,MAX_PATH)
假设您的.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 \