【发布时间】:2014-07-07 05:07:39
【问题描述】:
我希望有人能解释为什么 Directory.GetCurrentDirectory() 根据我将命令行参数传递给应用程序的方式(使用 args 运行与在应用程序上拖动文件夹)返回不同的结果。 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(虚拟机)
- 机器上的完全管理员权限
希望有人能提供一些见解。
【问题讨论】:
标签: c# .net .net-4.5 command-line-arguments