我希望有人可以解释为什么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:\Projects\ArgumentTest\ApplicationA\bin\Debug\ApplicationA.exe C:\mydirectory The current directory is C:\Projects\ArgumentTest\ApplicationA\bin\Debug\ Command line arguments are C:\mydirectory
如果通过在应用程序上拖动文件或文件夹来构建和运行此程序,则会得到不同的结果.而不是返回预期的结果而不是Directory.GetCurrentDirectory()返回您在应用程序上拖动的第一个文件的路径.
其他信息:
> .NET 4.5
> Windows 2012R2(虚拟机)
>机器的完全管理员权限
希望有人可以提供一些见解.