public static Type GetArgumentsType(this ProjectRunnerType type)
        {
            switch (type)
            {
            case ProjectRunnerType.LocalRepository: return(typeof(LocalRepositoryProjectRunnerArguments));

            case ProjectRunnerType.RemoteRepository: return(typeof(RemoteRepositoryProjectRunnerArguments));

            case ProjectRunnerType.TestProject: return(typeof(TestProjectRunnerArguments));

            case ProjectRunnerType.LocalProject: return(typeof(LocalProjectRunnerArguments));

            default: return(typeof(ProjectRunnerArguments));
            }
        }
        public static ProjectRunner GetProjectRunner(this ProjectRunnerType type, ProjectRunnerArguments args)
        {
            switch (type)
            {
            case ProjectRunnerType.TestProject: return(new TestProjectRunner(args));

            case ProjectRunnerType.LocalRepository: return(new LocalRepositoryProjectRunner(args));

            case ProjectRunnerType.RemoteRepository: return(new RemoteRepositoryProjectRunner(args));

            case ProjectRunnerType.LocalProject: return(new LocalProjectRunner(args));

            default: throw new System.Exception($"ProjectRunnerType: {type} Not Supported");
            }
        }