private static int Main()

in src/WindowsDebugLauncher/Program.cs [17:119]


        private static int Main(string[] argv)
        {
            DebugLauncher.LaunchParameters parameters = new DebugLauncher.LaunchParameters();
            parameters.PipeServer = "."; // Currently only supporting local pipe connections

            // Avoid sending the BOM on Windows if the Beta Unicode feature is enabled in Windows 10
            Console.OutputEncoding = new UTF8Encoding(encoderShouldEmitUTF8Identifier: false);
            Console.InputEncoding = new UTF8Encoding(encoderShouldEmitUTF8Identifier: false);

            foreach (var a in argv)
            {
                if (String.IsNullOrEmpty(a))
                {
                    continue;
                }

                switch (a)
                {
                    case "-h":
                    case "-?":
                    case "/?":
                    case "--help":
                        HelpMessage();
                        return 1;
                    case "--pauseForDebugger":
                        {

                            while (!Debugger.IsAttached)
                            {
                                Thread.Sleep(500);
                            }
                        }
                        break;
                    default:
                        if (a.StartsWith("--stdin=", StringComparison.OrdinalIgnoreCase))
                        {
                            string stdin = a.Substring("--stdin=".Length);
                            if (string.IsNullOrWhiteSpace(stdin))
                            {
                                GenerateError("--stdin");
                                return -1;
                            }
                            parameters.StdInPipeName = stdin;
                        }
                        else if (a.StartsWith("--stdout=", StringComparison.OrdinalIgnoreCase))
                        {
                            string stdout = a.Substring("--stdout=".Length);
                            if (string.IsNullOrWhiteSpace(stdout))
                            {
                                GenerateError("--stdout");
                                return -1;
                            }
                            parameters.StdOutPipeName = stdout;
                        }
                        else if (a.StartsWith("--stderr=", StringComparison.OrdinalIgnoreCase))
                        {
                            string stderr = a.Substring("--stderr=".Length);
                            if (string.IsNullOrWhiteSpace(stderr))
                            {
                                GenerateError("--stderr");
                                return -1;
                            }
                            parameters.StdErrPipeName = stderr;
                        }
                        else if (a.StartsWith("--pid=", StringComparison.OrdinalIgnoreCase))
                        {
                            string pid = a.Substring("--pid=".Length);
                            if (string.IsNullOrWhiteSpace(pid))
                            {
                                GenerateError("--pid");
                                return -1;
                            }
                            parameters.PidPipeName = pid;
                        }
                        else if (a.StartsWith("--dbgExe=", StringComparison.OrdinalIgnoreCase))
                        {
                            string dbgExe = a.Substring("--dbgExe=".Length);
                            if (String.IsNullOrEmpty(dbgExe) || !File.Exists(dbgExe))
                            {
                                GenerateError("--dbgExe");
                                return -1;
                            }
                            parameters.DbgExe = dbgExe;
                        }
                        else
                        {
                            parameters.DbgExeArgs.AddRange(ParseDebugExeArgs(a));
                        }
                        break;
                }
            }

            if (!parameters.ValidateParameters())
            {
                Console.Error.WriteLine("One or more required values are missing.");
                HelpMessage();
                return -1;
            }

            DebugLauncher launcher = new DebugLauncher(parameters);
            launcher.StartPipeConnection();
            return 0;
        }