小编Sve*_*kle的帖子

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();
    }
}
Run Code Online (Sandbox Code Playgroud)


如果使用命令提示符构建并运行它,如下所示,则输出就是您所期望的.它将输出应用程序所在的当前目录.

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
Run Code Online (Sandbox Code Playgroud)


如果通过在应用程序上拖动文件或文件夹来构建和运行此程序,则会得到不同的结果.而不是返回预期的结果而不是Directory.GetCurrentDirectory()返回您在应用程序上拖动的第一个文件的路径.


我现在有一个解决这个问题的方法,但我很想知道为什么会这样.

其他信息:

  • .NET 4.5
  • Windows 2012R2(虚拟机)
  • 机器的完全管理员权限

希望有人可以提供一些见解.

.net c# command-line-arguments .net-4.5

6
推荐指数
1
解决办法
2066
查看次数

标签 统计

.net ×1

.net-4.5 ×1

c# ×1

command-line-arguments ×1