ReportError() static public method

static public ReportError ( int errorNum, string msg ) : void
errorNum int
msg string
return void
Exemplo n.º 1
0
        internal bool ProcessProperty(string s)
        {
            string[] parameter, splittedProperties, property;
            parameter = s.Split(':');
            if (parameter.Length != 2)
            {
                ErrorUtilities.ReportError(5, "Property name and value expected as /p:<prop name>=<prop value>");
                return(false);
            }

            splittedProperties = parameter [1].Split(';');
            foreach (string st in splittedProperties)
            {
                if (st.IndexOf('=') < 0)
                {
                    ErrorUtilities.ReportError(5,
                                               "Invalid syntax. Property name and value expected as " +
                                               "<prop name>=[<prop value>]");
                    return(false);
                }
                property = st.Split('=');
                properties.SetProperty(property [0], property.Length == 2 ? property [1] : "");
            }

            return(true);
        }
Exemplo n.º 2
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);
            }
        }
Exemplo n.º 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);
            }
        }
Exemplo n.º 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);
                }

                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);
            }
        }
Exemplo n.º 5
0
        public void ParseArguments(string[] args)
        {
            bool autoResponse = true;

            flatArguments      = new ArrayList();
            remainingArguments = new ArrayList();
            responseFiles      = new Hashtable();
            foreach (string s in args)
            {
                if (s.StartsWith("/noautoresponse") || s.StartsWith("/noautorsp"))
                {
                    autoResponse = false;
                    continue;
                }
                if (s [0] != '@')
                {
                    flatArguments.Add(s);
                    continue;
                }
                string responseFilename = Path.GetFullPath(s.Substring(1));
                if (responseFiles.ContainsKey(responseFilename))
                {
                    ErrorUtilities.ReportError(1, String.Format("We already have {0} file.", responseFilename));
                }
                responseFiles [responseFilename] = responseFilename;
                LoadResponseFile(responseFilename);
            }
            if (autoResponse == true)
            {
                // FIXME: we do not allow nested auto response file
                LoadResponseFile(responseFile);
            }
            foreach (string s in flatArguments)
            {
                if (s [0] != '/' || !ParseFlatArgument(s))
                {
                    remainingArguments.Add(s);
                }
            }
            if (remainingArguments.Count == 0)
            {
                string[] sln_files  = Directory.GetFiles(Directory.GetCurrentDirectory(), "*.sln");
                string[] proj_files = Directory.GetFiles(Directory.GetCurrentDirectory(), "*proj");

                if (sln_files.Length == 0 && proj_files.Length == 0)
                {
                    ErrorUtilities.ReportError(3, "Please specify the project or solution file " +
                                               "to build, as none was found in the current directory.");
                }

                if (sln_files.Length + proj_files.Length > 1)
                {
                    ErrorUtilities.ReportError(5, "Please specify the project or solution file " +
                                               "to build, as more than one solution or project file was found " +
                                               "in the current directory");
                }

                if (sln_files.Length == 1)
                {
                    projectFile = sln_files [0];
                }
                else
                {
                    projectFile = proj_files [0];
                }
            }
            else if (remainingArguments.Count == 1)
            {
                projectFile = (string)remainingArguments [0];
            }
            else
            {
                ErrorUtilities.ReportError(4, "Too many project files specified");
            }
        }
Exemplo n.º 6
0
        void LoadResponseFile(string filename)
        {
            StreamReader sr = null;
            string       line;

            try {
                sr = new StreamReader(filename);
                StringBuilder sb = new StringBuilder();

                while ((line = sr.ReadLine()) != null)
                {
                    int t = line.Length;

                    for (int i = 0; i < t; i++)
                    {
                        char c = line [i];

                        if (c == '#')
                        {
                            // comment, ignore rest of the line
                            break;
                        }

                        if (c == '"' || c == '\'')
                        {
                            char end = c;

                            for (i++; i < t; i++)
                            {
                                c = line [i];

                                if (c == end)
                                {
                                    break;
                                }
                                sb.Append(c);
                            }
                        }
                        else if (c == ' ')
                        {
                            if (sb.Length > 0)
                            {
                                flatArguments.Add(sb.ToString());
                                sb.Length = 0;
                            }
                        }
                        else
                        {
                            sb.Append(c);
                        }
                    }
                    if (sb.Length > 0)
                    {
                        flatArguments.Add(sb.ToString());
                        sb.Length = 0;
                    }
                }
            } catch (Exception) {
                // FIXME: we lose exception message
                ErrorUtilities.ReportError(2, "Error during loading response file.");
            } finally {
                if (sr != null)
                {
                    sr.Close();
                }
            }
        }