Exemplo n.º 1
0
        static void Main(string[] args)
        {
            ApplicationEnvironment env = PlatformServices.Default.Application;

            CommandLineApplication app = new CommandLineApplication()
            {
                Name     = "AttachDebuggerByPort",
                FullName = "Attach Debugger By Port"
            };

            app.ShowHelp();

            ServiceProvider serviceProvider = new ServiceCollection()
                                              .AddSingleton <IConsoleWriter, ConsoleWriter>()
                                              .AddSingleton <ILowerLevelOpertationsService, LowerLevelOpertationsService>()
                                              .AddSingleton <IApplicationManager, ApplicationManager>()
                                              .BuildServiceProvider();

            CommandOption helpOption = app.HelpOption("-?|-h|--help");

            app.VersionOption("--version", () => env.ApplicationVersion);

            CommandOption portOption   = app.Option("-p|--port", "Port", CommandOptionType.SingleValue);
            CommandOption filterOption = app.Option("-f|--filter", "VS instance filter", CommandOptionType.SingleValue);

            app.OnExecute(() =>
            {
                IConsoleWriter consoleWriter = serviceProvider.GetService <IConsoleWriter>();

                IApplicationManager applicationManager = serviceProvider.GetService <IApplicationManager>();

                if (!portOption.HasValue())
                {
                    consoleWriter.PrintPortNumberNotAcceptableError();
                    return(-1);
                }

                return(applicationManager.AttachDebugger(
                           portOption.Value().Split(",").ToList(),
                           filterOption.Value() ?? string.Empty));
            });

            int exitCode = app.Execute(args);
        }