c# - 控制台应用程序中的多个参数未正确解析

标签 c# .net console console-application command-line-arguments

很容易重现,但对我来说真的很奇怪:

将以下带有 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/

相关文章:

c# - WinUI : Diplays SplashScreen with startup logic in OnLaunched method of the Application class

c# 是否有任何理由在 if 中将 String.contains 与 true 进行比较?

c# - 将新文件复制到 Unity 项目目录时检测并刷新编辑器

Linux 控制台 - 启动进程并等待完成

c# - 想要根据用户的输入更改 ForegroundColor

eclipse - 新Grails项目上的GGTS 3.2控制台超时失败

c# - 如何在 Python 中进行 groupby 列表理解(从 C#/LINQ 角度来看)

.net - 如何在 Linux 上更改 WinForms 应用程序的 WM_CLASS?

c# - 波浪号 (~) 解析为站点根目录而不是 asp.net 中的应用程序根目录

c# - 如何获取成员(member)的全名