Exemplo n.º 1
0
        public static void WriteEntry(object sender, LogType type, string message, Exception exception = null, Guid?correlatedId = null)
        {
            if (type > LogLevel)
            {
                return;
            }

            Task.WaitAll(Loggers.Select(logger => logger.WriteEntry(sender, type, message, exception, correlatedId)).ToArray());
        }
Exemplo n.º 2
0
        public async Task<IEnumerable<BuildResult>> ProcessRecordAsync()
        {
            var results = new List<BuildResult>();
            try
            {
                bool logTaskInputs = Parameters.Verbosity == LoggerVerbosity.Diagnostic;

                if (!logTaskInputs)
                {
                    foreach (var logger in Loggers)
                    {
                        if ((logger.Parameters != null &&
                            (logger.Parameters.IndexOf("V=DIAG", StringComparison.OrdinalIgnoreCase) != -1 ||
                            logger.Parameters.IndexOf("VERBOSITY=DIAG", StringComparison.OrdinalIgnoreCase) != -1)) ||
                            logger.Verbosity == LoggerVerbosity.Diagnostic)
                        {
                            logTaskInputs = true;
                            break;
                        }
                    }
                }

                var loggers = Loggers.Select(x => x.CreateLogger(Parameters.Verbosity)).ToList();

                foreach (var psLogger in loggers.OfType<IPSLogger>())
                {
                    psLogger.Initialize(PSEventSink);
                }

                var parameters = new BuildParameters
                {
                    Loggers = loggers,
                    MaxNodeCount = Parameters.MaxCpuCount,
                    DetailedSummary = Parameters.DetailedSummary,
                    DefaultToolsVersion = Parameters.ToolsVersion,
                    EnableNodeReuse = Parameters.NodeReuse,
                    WarningsAsErrors = Parameters.WarningsAsErrors,
                    WarningsAsMessages = Parameters.WarningsAsMessages,
                    LogTaskInputs = logTaskInputs,
                    NodeExeLocation = Factory.GetMSBuildPath()
                };

                _buildManager.BeginBuild(parameters);
                try
                {
                    var targetsToBuild = Parameters.Target ?? new string[0];

                    var requestData = new BuildRequestData(Parameters.Project, Parameters.Properties, Parameters.ToolsVersion, targetsToBuild, null);
                    var submission = _buildManager.PendBuildRequest(requestData);

                    var buildResult = await submission.ExecuteAsync();
                    var partialResult = MapBuildResult(Parameters.Project, buildResult);
                    results.Add(partialResult);
                }
                finally
                {
                    _buildManager.EndBuild();
                }
            }
            catch (OperationCanceledException)
            {
            }

            return results.ToArray();
        }