C# 在控制台应用程序中,什么';防止转义命令行参数中的特殊序列的最佳方法是什么?

C# 在控制台应用程序中,什么';防止转义命令行参数中的特殊序列的最佳方法是什么?,c#,.net,command-line,console-application,command-line-arguments,C#,.net,Command Line,Console Application,Command Line Arguments,我编写了这个控制台应用程序,它读取一系列命令行参数,并对它们进行处理 问题在于,如果用户输入以下内容: --folder "C:\my folder\" --username john 主函数的args字符串数组将有2个元素,而不是4个: 1st element: "--folder" 2nd element: "C:\my folder\" --username john" (将\“序列转义为双引号。) 由于不使用引号将导致5个元素 --folder C:\my folder\ --us

我编写了这个控制台应用程序,它读取一系列命令行参数,并对它们进行处理

问题在于,如果用户输入以下内容:

 --folder "C:\my folder\" --username john
主函数的args字符串数组将有2个元素,而不是4个:

1st element: "--folder"
2nd element: "C:\my folder\" --username john"
(将\“序列转义为双引号。)

由于不使用引号将导致5个元素

--folder C:\my folder\ --username john

1st element: --folder
2nd element: C:\my
3rd element: folder\
4th element: --username
5th element: john

…解决此问题的最佳方法是什么?

这是Windows上奇怪的命令行解析规则的结果。请参见此处。命令行实际上应该是:
--文件夹“C:\my folder\\”--用户名john


这是一个用户输入错误。您不应该尝试用代码来纠正它;只是优雅地失败。

Um.如果有人错误地逃避了他们在命令行上提供的参数,他们应该在命令行上键入时修复它。您不应该尝试并修复它(使用某种形式的“最佳猜测”)“按用户的意图)在程序内。在CodeProject上有一篇关于它的文章。