如何对 C# 控制台参数使用单引号而不是双引号?

How to use single quotes instead of doublequotes for C# console params?

在 C#.NET 控制台应用程序中,Main 所采用的 string[] args 已经处理了用双引号引起来的参数;例如,以下命令行:

MyProgram.exe A "B C D" E

... 将导致 args 中只有 3 个条目。但是,当改为使用单引号时:

MyProgram.exe A 'B C D' E

... 那么 args 将有 5 个条目。单引号没有把 B C D 变成一个参数。

是否有办法让 .NET 也将单引号视为有效的命令行参数引号字符,或者这是否需要特殊的命令行参数解析库?

您可以通过

访问整条线路
  Environment.CommandLine

并手动处理单引号

仅提取 CommandArg-Line 的一种方法可能是:

private static string getCommandLineArgLine()
        {
            string fullCommandLine = Environment.CommandLine;
            int applicationDoubleQuoteEnds = fullCommandLine.IndexOf("\"", 1, StringComparison.InvariantCulture);
            string commandArgLine = fullCommandLine.Substring(applicationDoubleQuoteEnds + 1).TrimStart();

            return commandArgLine;
        }

提示:如果启用了 vs-host 进程,请不要在调试环境中使用 System.Reflection.Assembly.GetExecutingAssembly().Location - 在这种情况下 return 将不会位于正确的位置(这就是为什么我阅读了最后一个“)