ShowVersion() 정적인 공개 메소드

static public ShowVersion ( bool exit ) : void
exit bool
리턴 void
예제 #1
0
        private bool ParseFlatArgument(string s)
        {
            switch (s)
            {
            case "/help":
            case "/h":
            case "/?":
                ErrorUtilities.ShowUsage();
                break;

            case "/nologo":
                noLogo = true;
                break;

            case "/version":
            case "/ver":
                ErrorUtilities.ShowVersion(true);
                break;

            case "/noconsolelogger":
            case "/noconlog":
                noConsoleLogger = true;
                break;

            case "/validate":
            case "/val":
                validate = true;
                break;

            case "/fl":
            case "/filelogger":
                if (FileLoggerParameters [0] == null)
                {
                    FileLoggerParameters [0] = String.Empty;
                }
                break;

            default:
                if (s.StartsWith("/fl") && s.Length == 4 && Char.IsDigit(s[3]))
                {
                    int index = Int32.Parse(s[3].ToString());
                    if (FileLoggerParameters [index] == null)
                    {
                        FileLoggerParameters [index] = String.Empty;
                    }
                }
                else if (s.StartsWith("/fileloggerparameters") || s.StartsWith("/flp"))
                {
                    ProcessFileLoggerParameters(s);
                }
                else if (s.StartsWith("/target:") || s.StartsWith("/t:"))
                {
                    ProcessTarget(s);
                }
                else if (s.StartsWith("/property:") || s.StartsWith("/p:"))
                {
                    if (!ProcessProperty(s))
                    {
                        return(false);
                    }
                }
                else if (s.StartsWith("/logger:") || s.StartsWith("/l:"))
                {
                    ProcessLogger(s);
                }
                else if (s.StartsWith("/verbosity:") || s.StartsWith("/v:"))
                {
                    ProcessVerbosity(s);
                }
                else if (s.StartsWith("/consoleloggerparameters:") || s.StartsWith("/clp:"))
                {
                    ProcessConsoleLoggerParameters(s);
                }
                else if (s.StartsWith("/validate:") || s.StartsWith("/val:"))
                {
                    ProcessValidate(s);
                }
                else if (s.StartsWith("/toolsversion:") || s.StartsWith("/tv:"))
                {
                    ToolsVersion = s.Split(':') [1];
                }
                else
                {
                    return(false);
                }
                break;
            }

            return(true);
        }
예제 #2
0
        private bool ParseFlatArgument(string s)
        {
            switch (s)
            {
            case "/help":
            case "/h":
            case "/?":
                ErrorUtilities.ShowUsage();
                break;

            case "/nologo":
                noLogo = true;
                break;

            case "/version":
            case "/ver":
                ErrorUtilities.ShowVersion(true);
                break;

            case "/noconsolelogger":
            case "/noconlog":
                noConsoleLogger = true;
                break;

            case "/validate":
            case "/val":
                validate = true;
                break;

            default:
                if (s.StartsWith("/target:") || s.StartsWith("/t:"))
                {
                    ProcessTarget(s);
                }
                else if (s.StartsWith("/property:") || s.StartsWith("/p:"))
                {
                    if (!ProcessProperty(s))
                    {
                        return(false);
                    }
                }
                else if (s.StartsWith("/logger:") || s.StartsWith("/l:"))
                {
                    ProcessLogger(s);
                }
                else if (s.StartsWith("/verbosity:") || s.StartsWith("/v:"))
                {
                    ProcessVerbosity(s);
                }
                else if (s.StartsWith("/consoleloggerparameters:") || s.StartsWith("/clp:"))
                {
                    ProcessConsoleLoggerParameters(s);
                }
                else if (s.StartsWith("/validate:") || s.StartsWith("/val:"))
                {
                    ProcessValidate(s);
                }
                else
                {
                    return(false);
                }
                break;
            }

            return(true);
        }
예제 #3
0
        public void Execute()
        {
            bool result          = false;
            bool show_stacktrace = false;

            try {
                parameters.ParseArguments(args);
                show_stacktrace = (parameters.LoggerVerbosity == LoggerVerbosity.Detailed ||
                                   parameters.LoggerVerbosity == LoggerVerbosity.Diagnostic);

                if (parameters.DisplayVersion)
                {
                    ErrorUtilities.ShowVersion(false);
                }

                engine = new Engine(binPath);

                engine.GlobalProperties = this.parameters.Properties;

                if (!parameters.NoConsoleLogger)
                {
                    printer = new ConsoleReportPrinter();
                    ConsoleLogger cl = new ConsoleLogger(parameters.LoggerVerbosity,
                                                         printer.Print, printer.SetForeground, printer.ResetColor);

                    cl.Parameters = parameters.ConsoleLoggerParameters;
                    cl.Verbosity  = parameters.LoggerVerbosity;
                    engine.RegisterLogger(cl);
                }

                foreach (LoggerInfo li in parameters.Loggers)
                {
                    Assembly assembly;
                    if (li.InfoType == LoadInfoType.AssemblyFilename)
                    {
                        assembly = Assembly.LoadFrom(li.Filename);
                    }
                    else
                    {
                        assembly = Assembly.Load(li.AssemblyName);
                    }
                    ILogger logger = (ILogger)Activator.CreateInstance(assembly.GetType(li.ClassName));
                    logger.Parameters = li.Parameters;
                    engine.RegisterLogger(logger);
                }

                project = engine.CreateNewProject();

                if (parameters.Validate)
                {
                    if (parameters.ValidationSchema == null)
                    {
                        project.SchemaFile = defaultSchema;
                    }
                    else
                    {
                        project.SchemaFile = parameters.ValidationSchema;
                    }
                }

                string projectFile = parameters.ProjectFile;
                if (!File.Exists(projectFile))
                {
                    ErrorUtilities.ReportError(0, String.Format("Project file '{0}' not found.", projectFile));
                    return;
                }

                project.Load(projectFile);

                string oldCurrentDirectory = Environment.CurrentDirectory;
                string dir = Path.GetDirectoryName(projectFile);
                if (!String.IsNullOrEmpty(dir))
                {
                    Directory.SetCurrentDirectory(dir);
                }
                result = engine.BuildProject(project, parameters.Targets, null);
                Directory.SetCurrentDirectory(oldCurrentDirectory);
            }

            catch (InvalidProjectFileException ipfe) {
                ErrorUtilities.ReportError(0, show_stacktrace ? ipfe.ToString() : ipfe.Message);
            }

            catch (InternalLoggerException ile) {
                ErrorUtilities.ReportError(0, show_stacktrace ? ile.ToString() : ile.Message);
            }

            catch (CommandLineException cle) {
                ErrorUtilities.ReportError(cle.ErrorCode, show_stacktrace ? cle.ToString() : cle.Message);
            }

            catch (Exception) {
                throw;
            }

            finally {
                if (engine != null)
                {
                    engine.UnregisterAllLoggers();
                    result = result && engine.BuildSuccess;
                }

                Environment.Exit(result ? 0 : 1);
            }
        }
예제 #4
0
        public void Execute()
        {
            bool result          = false;
            bool show_stacktrace = false;

            try {
                parameters.ParseArguments(args);
                show_stacktrace = (parameters.LoggerVerbosity == LoggerVerbosity.Detailed ||
                                   parameters.LoggerVerbosity == LoggerVerbosity.Diagnostic);

                if (!parameters.NoLogo)
                {
                    ErrorUtilities.ShowVersion(false);
                }

                engine = Engine.GlobalEngine;
                if (!String.IsNullOrEmpty(parameters.ToolsVersion))
                {
                    if (engine.Toolsets [parameters.ToolsVersion] == null)
                    {
                        ErrorUtilities.ReportError(0, new UnknownToolsVersionException(parameters.ToolsVersion).Message);
                    }

                    engine.DefaultToolsVersion = parameters.ToolsVersion;
                }

                engine.GlobalProperties = this.parameters.Properties;

                if (!parameters.NoConsoleLogger)
                {
                    printer = new ConsoleReportPrinter();
                    ConsoleLogger cl = new ConsoleLogger(parameters.LoggerVerbosity,
                                                         printer.Print, printer.SetForeground, printer.ResetColor);

                    cl.Parameters = parameters.ConsoleLoggerParameters;
                    cl.Verbosity  = parameters.LoggerVerbosity;
                    engine.RegisterLogger(cl);
                }

                if (parameters.FileLoggerParameters != null)
                {
                    for (int i = 0; i < parameters.FileLoggerParameters.Length; i++)
                    {
                        string fl_params = parameters.FileLoggerParameters [i];
                        if (fl_params == null)
                        {
                            continue;
                        }

                        var fl = new FileLogger();
                        if (fl_params.Length == 0 && i > 0)
                        {
                            fl.Parameters = String.Format("LogFile=msbuild{0}.log", i);
                        }
                        else
                        {
                            fl.Parameters = fl_params;
                        }
                        engine.RegisterLogger(fl);
                    }
                }

                foreach (LoggerInfo li in parameters.Loggers)
                {
                    Assembly assembly;
                    if (li.InfoType == LoadInfoType.AssemblyFilename)
                    {
                        assembly = Assembly.LoadFrom(li.Filename);
                    }
                    else
                    {
                        assembly = Assembly.Load(li.AssemblyName);
                    }
                    ILogger logger = (ILogger)Activator.CreateInstance(assembly.GetType(li.ClassName));
                    logger.Parameters = li.Parameters;
                    engine.RegisterLogger(logger);
                }

                project = engine.CreateNewProject();

                if (parameters.Validate)
                {
                    if (parameters.ValidationSchema == null)
                    {
                        project.SchemaFile = defaultSchema;
                    }
                    else
                    {
                        project.SchemaFile = parameters.ValidationSchema;
                    }
                }

                string projectFile = parameters.ProjectFile;
                if (!File.Exists(projectFile))
                {
                    ErrorUtilities.ReportError(0, String.Format("Project file '{0}' not found.", projectFile));
                    return;
                }

                result = engine.BuildProjectFile(projectFile, parameters.Targets, null, null, BuildSettings.None, parameters.ToolsVersion);
            }

            catch (InvalidProjectFileException ipfe) {
                ErrorUtilities.ReportError(0, show_stacktrace ? ipfe.ToString() : ipfe.Message);
            }

            catch (InternalLoggerException ile) {
                ErrorUtilities.ReportError(0, show_stacktrace ? ile.ToString() : ile.Message);
            }

            catch (CommandLineException cle) {
                ErrorUtilities.ReportError(cle.ErrorCode, show_stacktrace ? cle.ToString() : cle.Message);
            }
            finally {
                if (engine != null)
                {
                    engine.UnregisterAllLoggers();
                }

                Environment.Exit(result ? 0 : 1);
            }
        }
예제 #5
0
        public void Execute()
        {
            bool result          = false;
            bool show_stacktrace = false;

            try {
                parameters.ParseArguments(args);
                show_stacktrace = (parameters.LoggerVerbosity == LoggerVerbosity.Detailed ||
                                   parameters.LoggerVerbosity == LoggerVerbosity.Diagnostic);

                if (!parameters.NoLogo)
                {
                    ErrorUtilities.ShowVersion(false);
                }

                project_collection = new ProjectCollection();
                if (!String.IsNullOrEmpty(parameters.ToolsVersion))
                {
                    if (project_collection.GetToolset(parameters.ToolsVersion) == null)
                    {
                        ErrorUtilities.ReportError(0, new InvalidToolsetDefinitionException("Toolset " + parameters.ToolsVersion + " was not found").Message);
                    }

                    project_collection.DefaultToolsVersion = parameters.ToolsVersion;
                }

                foreach (var p in parameters.Properties)
                {
                    project_collection.GlobalProperties.Add(p.Key, p.Value);
                }

                if (!parameters.NoConsoleLogger)
                {
                    printer = new ConsoleReportPrinter();
                    ConsoleLogger cl = new ConsoleLogger(parameters.LoggerVerbosity,
                                                         printer.Print, printer.SetForeground, printer.ResetColor);

                    cl.Parameters = parameters.ConsoleLoggerParameters;
                    cl.Verbosity  = parameters.LoggerVerbosity;
                    project_collection.RegisterLogger(cl);
                }

                if (parameters.FileLoggerParameters != null)
                {
                    for (int i = 0; i < parameters.FileLoggerParameters.Length; i++)
                    {
                        string fl_params = parameters.FileLoggerParameters [i];
                        if (fl_params == null)
                        {
                            continue;
                        }

                        var fl = new FileLogger();
                        if (fl_params.Length == 0 && i > 0)
                        {
                            fl.Parameters = String.Format("LogFile=msbuild{0}.log", i);
                        }
                        else
                        {
                            fl.Parameters = fl_params;
                        }
                        project_collection.RegisterLogger(fl);
                    }
                }

                foreach (LoggerInfo li in parameters.Loggers)
                {
                    Assembly assembly;
                    if (li.InfoType == LoadInfoType.AssemblyFilename)
                    {
                        assembly = Assembly.LoadFrom(li.Filename);
                    }
                    else
                    {
                        assembly = Assembly.Load(li.AssemblyName);
                    }
                    ILogger logger = (ILogger)Activator.CreateInstance(assembly.GetType(li.ClassName));
                    logger.Parameters = li.Parameters;
                    project_collection.RegisterLogger(logger);
                }

                string projectFile = parameters.ProjectFile;
                if (!File.Exists(projectFile))
                {
                    ErrorUtilities.ReportError(0, String.Format("Project file '{0}' not found.", projectFile));
                    return;
                }

                XmlReaderSettings settings = new XmlReaderSettings();
                if (parameters.Validate)
                {
                    settings.ValidationType = ValidationType.Schema;
                    if (parameters.ValidationSchema == null)
                    {
                        using (var xsdxml = XmlReader.Create(defaultSchema))
                            settings.Schemas.Add(XmlSchema.Read(xsdxml, null));
                    }
                    else
                    {
                        using (var xsdxml = XmlReader.Create(parameters.ValidationSchema))
                            settings.Schemas.Add(XmlSchema.Read(xsdxml, null));
                    }
                }

                var projectInstances = new List <ProjectInstance> ();
                if (string.Equals(Path.GetExtension(projectFile), ".sln", StringComparison.OrdinalIgnoreCase))
                {
                    var parser = new SolutionParser();
                    var root   = ProjectRootElement.Create(project_collection);
                    root.FullPath = projectFile;
                    parser.ParseSolution(projectFile, project_collection, root, LogWarning);
                    projectInstances.Add(new Project(root, parameters.Properties, parameters.ToolsVersion, project_collection).CreateProjectInstance());
                }
                else
                {
                    project          = ProjectRootElement.Create(XmlReader.Create(projectFile, settings), project_collection);
                    project.FullPath = projectFile;
                    var pi = new ProjectInstance(project, parameters.Properties, parameters.ToolsVersion, project_collection);
                    projectInstances.Add(pi);
                }
                foreach (var projectInstance in projectInstances)
                {
                    var targets = parameters.Targets.Length > 0 ? parameters.Targets : projectInstance.DefaultTargets.ToArray();
                    result = projectInstance.Build(targets, parameters.Loggers.Count > 0 ? parameters.Loggers : project_collection.Loggers);
                    if (!result)
                    {
                        break;
                    }
                }
            }

            catch (InvalidProjectFileException ipfe) {
                ErrorUtilities.ReportError(0, show_stacktrace ? ipfe.ToString() : ipfe.Message);
            }

            catch (InternalLoggerException ile) {
                ErrorUtilities.ReportError(0, show_stacktrace ? ile.ToString() : ile.Message);
            }

            catch (CommandLineException cle) {
                ErrorUtilities.ReportError(cle.ErrorCode, show_stacktrace ? cle.ToString() : cle.Message);
            }
            finally {
                //if (project_collection != null)
                //	project_collection.UnregisterAllLoggers ();

                Environment.Exit(result ? 0 : 1);
            }
        }