Ejemplo n.º 1
0
        void BeginBuildOperation(IEngineLogWriter logWriter, string binLogFilePath, MSBuildVerbosity verbosity, ProjectConfigurationInfo [] configurations)
        {
            // Start a new MSBuild build session, sending log to the provided writter

            RunSTA(delegate {
                BuildOperationStarted = true;
                // This property specifies the mapping between the solution configuration
                // and the project configurations
                engine.SetGlobalProperty("CurrentSolutionConfigurationContents", ProjectBuilder.GenerateSolutionConfigurationContents(configurations));
                BuildParameters parameters = new BuildParameters(engine);
                sessionLogWriter           = logWriter;
                loggerAdapter = new MSBuildLoggerAdapter(logWriter, verbosity);

                if (!string.IsNullOrEmpty(binLogFilePath))
                {
                    var binaryLogger = new BinaryLogger {
                        Parameters = binLogFilePath,
                        Verbosity  = LoggerVerbosity.Diagnostic
                    };

                    var loggers = new List <ILogger> (loggerAdapter.Loggers);
                    loggers.Add(binaryLogger);
                    parameters.Loggers = loggers;
                }
                else
                {
                    parameters.Loggers = loggerAdapter.Loggers;
                }

                BuildManager.DefaultBuildManager.BeginBuild(parameters);
            });
        }
Ejemplo n.º 2
0
 internal RemoteProjectBuilder(string file, ProjectBuilder builder, RemoteBuildEngine engine)
 {
     this.file                = file;
     this.engine              = engine;
     this.builder             = builder;
     referenceCache           = new Dictionary <string, AssemblyReference[]> ();
     packageDependenciesCache = new Dictionary <string, PackageDependency[]> ();
 }
 public async Task UnloadProject(ProjectBuilder builder)
 {
     try {
         await connection.SendMessage(new UnloadProjectRequest { ProjectId = ((ProjectBuilder)builder).ProjectId });
     } catch (Exception ex) {
         LoggingService.LogError("Project unloading failed", ex);
         if (!await CheckDisconnected())
         {
             throw;
         }
     }
 }
Ejemplo n.º 4
0
        internal async Task UnloadProject(RemoteProjectBuilder remoteBuilder, ProjectBuilder builder)
        {
            lock (remoteProjectBuilders)
                remoteProjectBuilders.Remove(remoteBuilder);

            try {
                await connection.SendMessage(new UnloadProjectRequest { ProjectId = ((ProjectBuilder)builder).ProjectId });
            } catch (Exception ex) {
                LoggingService.LogError("Project unloading failed", ex);
                if (!await CheckDisconnected())
                {
                    throw;
                }
            }
        }
Ejemplo n.º 5
0
        public BinaryMessage UnloadProject(UnloadProjectRequest msg)
        {
            ProjectBuilder pb = null;

            lock (projects) {
                if (projects.TryGetValue(msg.ProjectId, out pb))
                {
                    projects.Remove(msg.ProjectId);
                }
            }
            if (pb != null)
            {
                UnloadProject(pb);
            }
            return(msg.CreateResponse());
        }
Ejemplo n.º 6
0
        void BeginBuildOperation(IEngineLogWriter logWriter, MSBuildVerbosity verbosity, ProjectConfigurationInfo [] configurations)
        {
            // Start a new MSBuild build session, sending log to the provided writter

            RunSTA(delegate {
                BuildOperationStarted = true;
                // This property specifies the mapping between the solution configuration
                // and the project configurations
                engine.SetGlobalProperty("CurrentSolutionConfigurationContents", ProjectBuilder.GenerateSolutionConfigurationContents(configurations));
                BuildParameters parameters = new BuildParameters(engine);
                sessionLogWriter           = logWriter;
                loggerAdapter      = new MSBuildLoggerAdapter(logWriter, verbosity);
                parameters.Loggers = loggerAdapter.Loggers;
                BuildManager.DefaultBuildManager.BeginBuild(parameters);
            });
        }
Ejemplo n.º 7
0
 public async void Dispose()
 {
     if (!MSBuildProjectService.ShutDown && engine != null)
     {
         try {
             if (builder != null)
             {
                 await engine.UnloadProject(this, builder).ConfigureAwait(false);
             }
             MSBuildProjectService.ReleaseProjectBuilder(engine);
         } catch {
             // Ignore
         }
         GC.SuppressFinalize(this);
         engine  = null;
         builder = null;
     }
 }
Ejemplo n.º 8
0
        public MSBuildLoggerAdapter(IEngineLogWriter logWriter, MSBuildVerbosity verbosity) : base(logWriter)
        {
            // LocalLogger will be used to collect build result information.
            // ConsoleLogger is used for the regular build output
            // TargetLogger collects and fordwards build events requested by the client

            var logger = new LocalLogger()
            {
                Adapter = this
            };

            if (logWriter != null)
            {
                var consoleLogger = new ConsoleLogger(ProjectBuilder.GetVerbosity(verbosity), LogWrite, null, null);
                eventsLogger = new TargetLogger(logWriter.RequiredEvents, LogEvent);
                loggers      = new ILogger [] { logger, consoleLogger, eventsLogger };
            }
            else
            {
                loggers = new ILogger [] { logger };
            }
        }
Ejemplo n.º 9
0
 public void UnloadProject(ProjectBuilder pb)
 {
     pb.Dispose();
 }
Ejemplo n.º 10
0
 public void UnloadProject(ProjectBuilder pb)
 {
     ((ProjectBuilder)pb).Dispose();
     RemotingServices.Disconnect((MarshalByRefObject)pb);
 }
Ejemplo n.º 11
0
 internal async Task Load()
 {
     builder = await engine.LoadProject(file).ConfigureAwait(false);
 }