很容易重现,但对我来说真的很奇怪:
将以下带有 3 个字符串的“args”添加到 VisualStudio 的命令行参数文本框中(在项目属性->调试->启动选项下):
-SourceFile:"c:\temp\file.txt" -DestinationFolder:"c:\temp\" -ArchiveFolder:"C:\temp\"
使用这个简单的控制台应用程序对其进行测试:
class Program
{
static void Main(string[] args)
{
foreach (string t in args)
{
Console.WriteLine(t);
}
Console.ReadKey();
}
}
结果:数组 (args[]) 有 2 个而不是 3 个字符串?
[0] SourceFile:c:\temp\file.txt
[1] DestinationFolder:c:\temp" -ArchiveFolder:C:\temp"
有人能解释一下为什么会这样吗?引号有一些奇怪的原因,通常情况下,引号将被 .net 删除,但在这里,仍然有一些引号……但我看不出问题……
感谢您的帮助!
最佳答案
您在 DestinationFolder
值中有一个 \"
,它“转义”引号,将其包含在值的文本中而不是与开头引号配对关闭字符串。您需要文字 \
,因此请使用 \\
:
-SourceFile:"c:\temp\file.txt" -DestinationFolder:"c:\temp\\" -ArchiveFolder:"C:\temp\\"
(你甚至可以在 SO 的高亮引擎中看到转义)
关于c# - 控制台应用程序中的多个参数未正确解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14464759/