c# – Directory.GetCurrentDirectory()根据命令行参数返回不同
我希望有人可以解释为什么Directory.GetCurrentDirectory()根据我将命令行参数传递给应用程序的方式返回不同的结果(使用args运行vs在app.exe上拖动文件夹)
要直接进入它,请考虑以下代码: public class Program { static void Main(string[] args) { Console.WriteLine("The current directory is {0}",Directory.GetCurrentDirectory()); if(args != null && args.Any()) Console.WriteLine("Command line arguments are {0}",String.Join(",",args)); Console.ReadLine(); } } 如果使用命令提示符构建并运行它,如下所示,则输出就是您所期望的.它将输出应用程序所在的当前目录. C:ProjectsArgumentTestApplicationAbinDebugApplicationA.exe C:mydirectory The current directory is C:ProjectsArgumentTestApplicationAbinDebug Command line arguments are C:mydirectory 如果通过在应用程序上拖动文件或文件夹来构建和运行此程序,则会得到不同的结果.而不是返回预期的结果而不是Directory.GetCurrentDirectory()返回您在应用程序上拖动的第一个文件的路径. 我现在有一个解决这个问题的方法,但我很想知道为什么会这样. 其他信息: > .NET 4.5 希望有人可以提供一些见解. 解决方法
我认为这里的问题是你的期望.特别是这一点:
这不是我对GetCurrentDirectory()的期望.当前目录是调用上下文的一个功能,而不是应用程序.如果我通过完整或相对路径(而不仅仅是foo.exe)运行可执行文件,我希望GetCurrentDirectory()返回我所在的目录 – 而不是应用程序所在的目录.在拖动文件的情况下它:坦率地说,GetCurrentDirectory()在很大程度上是未定义的,但第一个文件的目录并不合理. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |