コード例 #1
1
ファイル: BuildEngine.cs プロジェクト: Altaxo/Altaxo
		/// <summary>
		/// Starts to run a build inside the SharpDevelop GUI.
		/// Only one build can run inside the GUI at one time.
		/// </summary>
		/// <param name="project">The project/solution to build.</param>
		/// <param name="options">The build options.</param>
		public static void BuildInGui(IBuildable project, BuildOptions options)
		{
			if (project == null)
				throw new ArgumentNullException("project");
			if (options == null)
				throw new ArgumentNullException("options");
			WorkbenchSingleton.AssertMainThread();
			if (guiBuildCancellation != null) {
				BuildResults results = new BuildResults();
				WorkbenchSingleton.StatusBar.SetMessage(Core.ResourceService.GetString("MainWindow.CompilerMessages.MSBuildAlreadyRunning"));
				BuildError error = new BuildError(null, Core.ResourceService.GetString("MainWindow.CompilerMessages.MSBuildAlreadyRunning"));
				results.Add(error);
				TaskService.Add(new Task(error));
				results.Result = BuildResultCode.MSBuildAlreadyRunning;
				if (options.Callback != null) {
					options.Callback(results);
				}
			} else {
				guiBuildCancellation = new CancellationTokenSource();
				IProgressMonitor progressMonitor = WorkbenchSingleton.StatusBar.CreateProgressMonitor(guiBuildCancellation.Token);
				guiBuildTrackedFeature = AnalyticsMonitorService.TrackFeature("ICSharpCode.SharpDevelop.Project.BuildEngine.Build");
				WorkbenchSingleton.StatusBar.SetMessage(StringParser.Parse("${res:MainWindow.CompilerMessages.BuildVerb}..."));
				ProjectService.RaiseEventBuildStarted(new BuildEventArgs(project, options));
				StartBuild(project, options,
				           new MessageViewSink(TaskService.BuildMessageViewCategory, progressMonitor, WorkbenchSingleton.StatusBar));
			}
		}
コード例 #2
0
		public override async void StartBuild()
		{
			var options = new BuildOptions(BuildTarget.Rebuild);
			options.TargetForDependencies = BuildTarget.Build;
			options.ProjectAdditionalProperties["RunCodeAnalysis"] = "true";
			CallbackMethod(await SD.BuildService.BuildAsync(this.ProjectToBuild, options));
		}
コード例 #3
0
		public override void StartBuild()
		{
			BuildOptions options = new BuildOptions(BuildTarget.Rebuild, CallbackMethod);
			options.TargetForDependencies = BuildTarget.Build;
			options.ProjectAdditionalProperties["RunSourceAnalysis"] = "true";
			BuildEngine.BuildInGui(this.ProjectToBuild, options);
		}
コード例 #4
0
		public override async void StartBuild()
		{
			var options = new BuildOptions(BuildTarget.Rebuild);
			options.TargetForDependencies = BuildTarget.Build;
			options.ProjectAdditionalProperties["RunSourceAnalysis"] = "true";
			options.ProjectAdditionalProperties["StyleCopFile"] = StyleCopWrapper.FindStyleCopPath() ?? string.Empty;
			CallbackMethod(await SD.BuildService.BuildAsync(this.ProjectToBuild, options));
		}
コード例 #5
0
		public override void StartBuild()
		{
			BuildOptions options = new BuildOptions(BuildTarget.Rebuild, CallbackMethod);
			options.TargetForDependencies = BuildTarget.Build;
			options.ProjectAdditionalProperties["RunSourceAnalysis"] = "true";
			options.ProjectAdditionalProperties["StyleCopFile"] = StyleCopWrapper.FindStyleCopPath() ?? string.Empty;
			BuildEngine.BuildInGui(this.ProjectToBuild, options);
		}
コード例 #6
0
 public BuildEventArgs(IReadOnlyList<IProject> projects, BuildOptions options, BuildResults results)
 {
     if (projects == null)
         throw new ArgumentNullException("projects");
     if (options == null)
         throw new ArgumentNullException("options");
     this.Projects = projects;
     this.Options = options;
     this.Results = results;
 }
コード例 #7
0
		public async Task RunTestsAsync(IEnumerable<ITest> selectedTests, TestExecutionOptions options, CancellationToken cancellationToken)
		{
			this.cancellationToken = cancellationToken;
			GroupTestsByProject(selectedTests);
			
			ClearTasks();
			ShowUnitTestsPad();
			ShowOutputPad();
			
			ResetTestResults();
			saveAllFilesCommand.SaveAllFiles();
			
			// Run the build, if necessary:
			var projectsToBuild = testsByProject.Keys.Where(p => p.IsBuildNeededBeforeTestRun).Select(p => p.Project).ToList();
			if (projectsToBuild.Count > 0) {
				using (cancellationToken.Register(buildService.CancelBuild)) {
					var buildOptions = new BuildOptions(BuildTarget.Build);
					buildOptions.BuildDetection = BuildOptions.BuildOnExecute;
					var buildResults = await buildService.BuildAsync(projectsToBuild, buildOptions);
					if (buildResults.Result != BuildResultCode.Success)
						return;
				}
			}
			
			cancellationToken.ThrowIfCancellationRequested();
			using (IProgressMonitor progressMonitor = statusBarService.CreateProgressMonitor(cancellationToken)) {
				int projectsLeftToRun = testsByProject.Count;
				foreach (IGrouping<ITestProject, ITest> g in testsByProject.OrderBy(g => g.Key.DisplayName)) {
					currentProjectBeingTested = g.Key;
					progressMonitor.TaskName = GetProgressMonitorLabel(currentProjectBeingTested);
					progressMonitor.Progress = GetProgress(projectsLeftToRun);
					using (testProgressMonitor = progressMonitor.CreateSubTask(1.0 / testsByProject.Count)) {
						using (ITestRunner testRunner = currentProjectBeingTested.CreateTestRunner(options)) {
							testRunner.TestFinished += testRunner_TestFinished;
							var writer = new MessageViewCategoryTextWriter(testService.UnitTestMessageView);
							await testRunner.RunAsync(g, testProgressMonitor, writer, testProgressMonitor.CancellationToken);
						}
					}
					projectsLeftToRun--;
					progressMonitor.CancellationToken.ThrowIfCancellationRequested();
				}
			}
			
			ShowErrorList();
		}
コード例 #8
0
ファイル: BuildEngine.cs プロジェクト: Paccc/SharpDevelop
		/// <summary>
		/// Starts to run a build.
		/// </summary>
		/// <param name="project">The project/solution to build</param>
		/// <param name="options">The build options that should be used</param>
		/// <param name="buildFeedbackSink">The build feedback sink that receives the build output.
		/// The output is nearly sent "as it comes in": sometimes output must wait because the BuildEngine
		/// will ensure that output from two projects building in parallel isn't interleaved.</param>
		/// <param name="progressMonitor">The progress monitor that receives build progress. The monitor will be disposed
		/// when the build completes.</param>
		public static Task<BuildResults> BuildAsync(IBuildable project, BuildOptions options, IBuildFeedbackSink buildFeedbackSink, IProgressMonitor progressMonitor)
		{
			if (project == null)
				throw new ArgumentNullException("project");
			if (options == null)
				throw new ArgumentNullException("options");
			
			BuildEngine engine = new BuildEngine(options, project);
			engine.buildStart = DateTime.Now;
			engine.combinedBuildFeedbackSink = buildFeedbackSink;
			engine.progressMonitor = progressMonitor;
			try {
				engine.rootNode = engine.CreateBuildGraph(project);
			} catch (CyclicDependencyException ex) {
				BuildError error;
				if (ex.Project1 != null && ex.Project2 != null)
					error = new BuildError(null, "Cyclic dependency between " + ex.Project1.Name + " and " + ex.Project2.Name);
				else
					error = new BuildError(null, "Cyclic dependency");
				engine.results.Add(error);
				if (engine.combinedBuildFeedbackSink != null) {
					engine.combinedBuildFeedbackSink.ReportError(error);
					engine.combinedBuildFeedbackSink.ReportMessage(error.ToRichText());
				}
				
				engine.results.Result = BuildResultCode.BuildFileError;
				engine.ReportDone();
				return engine.tcs.Task;
			}
			
			engine.workersToStart = options.ParallelProjectCount;
			if (engine.workersToStart < 1)
				engine.workersToStart = 1;
			
			engine.cancellationRegistration = engine.progressMonitor.CancellationToken.Register(engine.BuildCancelled);
			
			engine.ReportMessageLine("${res:MainWindow.CompilerMessages.BuildStarted}");
			engine.StartBuildProjects();
			engine.UpdateProgressTaskName();
			return engine.tcs.Task;
		}
コード例 #9
0
		/// <summary>
		/// Starts to run a build inside the SharpDevelop GUI.
		/// Only one build can run inside the GUI at one time.
		/// </summary>
		/// <param name="project">The project/solution to build.</param>
		/// <param name="options">The build options.</param>
		public static void BuildInGui(IBuildable project, BuildOptions options)
		{
			if (project == null)
				throw new ArgumentNullException("project");
			if (options == null)
				throw new ArgumentNullException("options");
			WorkbenchSingleton.AssertMainThread();
			if (guiBuildProgressMonitor != null) {
				BuildResults results = new BuildResults();
				results.Add(new BuildError(null, Core.ResourceService.GetString("MainWindow.CompilerMessages.MSBuildAlreadyRunning")));
				results.Result = BuildResultCode.MSBuildAlreadyRunning;
				if (options.Callback != null) {
					options.Callback(results);
				}
			} else {
				guiBuildProgressMonitor = new CancellableProgressMonitor(StatusBarService.CreateProgressMonitor());
				Gui.WorkbenchSingleton.Workbench.GetPad(typeof(Gui.CompilerMessageView)).BringPadToFront();
				GuiBuildStarted.RaiseEvent(null, new BuildEventArgs(project, options));
				StartBuild(project, options,
				           new MessageViewSink(TaskService.BuildMessageViewCategory),
				           guiBuildProgressMonitor);
			}
		}
コード例 #10
0
		internal static void RunMSBuild(Solution solution, IProject project,
		                                string configuration, string platform, BuildOptions options)
		{
			WorkbenchSingleton.Workbench.GetPad(typeof(CompilerMessageView)).BringPadToFront();
			MSBuildEngine engine = new MSBuildEngine();
			engine.Configuration = configuration;
			engine.Platform = platform;
			engine.MessageView = TaskService.BuildMessageViewCategory;
			engine.Run(solution, project, options);
		}
コード例 #11
0
		public override void StartBuild(BuildOptions options)
		{
			RunMSBuild(this.ParentSolution, this,
			           this.ActiveConfiguration, this.ActivePlatform, options);
		}
コード例 #12
0
 public ProjectBuildOptions CreateProjectBuildOptions(BuildOptions options, bool isRootBuildable)
 {
     return(null);
 }
コード例 #13
0
			public BuildRun(Solution solution, IProject project, BuildOptions options, MSBuildEngine parentEngine)
			{
				this.solution = solution;
				this.project = project;
				this.options = options;
				this.parentEngine = parentEngine;
			}
コード例 #14
0
		public static ProjectBuildOptions CreateProjectBuildOptions(this IBuildable buildable, BuildOptions options, bool isRootBuildable)
		{
			IBuildable2 buildable2 = buildable as IBuildable2;
			if (buildable2 != null) {
				return buildable2.CreateProjectBuildOptions(options, isRootBuildable);
			}
			// start of default implementation
			var configMatchings = buildable.ParentSolution.GetActiveConfigurationsAndPlatformsForProjects(options.SolutionConfiguration, options.SolutionPlatform);
			ProjectBuildOptions projectOptions = new ProjectBuildOptions(isRootBuildable ? options.ProjectTarget : options.TargetForDependencies);
			// Find the project configuration, and build an XML string containing all configurations from the solution
			StringWriter solutionConfigurationXml = new StringWriter();
			using (XmlTextWriter solutionConfigurationWriter = new XmlTextWriter(solutionConfigurationXml)) {
				solutionConfigurationWriter.WriteStartElement("SolutionConfiguration", "");
				foreach (var matching in configMatchings) {
					if (matching.Project == buildable) {
						projectOptions.Configuration = matching.Configuration;
						projectOptions.Platform = matching.Platform;
					}
					
					solutionConfigurationWriter.WriteStartElement("ProjectConfiguration");
					solutionConfigurationWriter.WriteAttributeString("Project", matching.Project.IdGuid);
					solutionConfigurationWriter.WriteValue(matching.Configuration + "|" + MSBuildInternals.FixPlatformNameForProject(matching.Platform));
					solutionConfigurationWriter.WriteEndElement();
				}
				solutionConfigurationWriter.WriteEndElement();
			}
			
			// fall back to solution config if we don't find any entries for the project
			if (string.IsNullOrEmpty(projectOptions.Configuration))
				projectOptions.Configuration = options.SolutionConfiguration;
			if (string.IsNullOrEmpty(projectOptions.Platform))
				projectOptions.Platform = options.SolutionPlatform;
			
			// copy properties to project options
			options.GlobalAdditionalProperties.ForEach(projectOptions.Properties.Add);
			if (isRootBuildable) {
				foreach (var pair in options.ProjectAdditionalProperties) {
					projectOptions.Properties[pair.Key] = pair.Value;
				}
			}
			// Set property for solution configuration. This allows MSBuild to know the correct configuration for project references,
			// which is necessary to resolve the referenced project's OutputPath.
			projectOptions.Properties["CurrentSolutionConfigurationContents"] = solutionConfigurationXml.ToString();
			return projectOptions;
		}
コード例 #15
0
ファイル: BuildEngine.cs プロジェクト: Altaxo/Altaxo
		/// <summary>
		/// Starts to run a build.
		/// </summary>
		/// <param name="project">The project/solution to build</param>
		/// <param name="options">The build options that should be used</param>
		/// <param name="realtimeBuildFeedbackSink">The build feedback sink that receives the build output.
		/// The output is nearly sent "as it comes in": sometimes output must wait because the BuildEngine
		/// will ensure that output from two projects building in parallel isn't interleaved.</param>
		/// <param name="progressMonitor">The progress monitor that receives build progress. The monitor will be disposed
		/// when the build completes.</param>
		public static void StartBuild(IBuildable project, BuildOptions options, IBuildFeedbackSink realtimeBuildFeedbackSink)
		{
			if (project == null)
				throw new ArgumentNullException("solution");
			if (options == null)
				throw new ArgumentNullException("options");
			
			Solution solution = project.ParentSolution;
			if (solution == null)
				throw new ArgumentException("project.ParentSolution must not be null", "project");
			
			if (string.IsNullOrEmpty(options.SolutionConfiguration))
				options.SolutionConfiguration = solution.Preferences.ActiveConfiguration;
			if (string.IsNullOrEmpty(options.SolutionPlatform))
				options.SolutionPlatform = solution.Preferences.ActivePlatform;
			
			BuildEngine engine = new BuildEngine(options, project);
			engine.buildStart = DateTime.Now;
			engine.combinedBuildFeedbackSink = realtimeBuildFeedbackSink;
			engine.progressMonitor = realtimeBuildFeedbackSink.ProgressMonitor;
			try {
				engine.rootNode = engine.CreateBuildGraph(project);
			} catch (CyclicDependencyException ex) {
				if (ex.Project1 != null && ex.Project2 != null)
					engine.results.Add(new BuildError(null, "Cyclic dependency between " + ex.Project1.Name + " and " + ex.Project2.Name));
				else
					engine.results.Add(new BuildError(null, "Cyclic dependency"));
				engine.results.Result = BuildResultCode.BuildFileError;
				engine.ReportDone();
				return;
			}
			
			engine.workersToStart = options.ParallelProjectCount;
			if (engine.workersToStart < 1)
				engine.workersToStart = 1;
			
			engine.cancellationRegistration = engine.progressMonitor.CancellationToken.Register(engine.BuildCancelled);
			
			engine.ReportMessageLine("${res:MainWindow.CompilerMessages.BuildStarted}");
			engine.StartBuildProjects();
			engine.UpdateProgressTaskName();
		}
コード例 #16
0
		public virtual void StartBuild(BuildOptions options)
		{
		}
コード例 #17
0
 public ProjectBuildOptions CreateProjectBuildOptions(BuildOptions options, bool isRootBuildable)
 {
     return null;
 }
コード例 #18
0
ファイル: BuildService.cs プロジェクト: Paccc/SharpDevelop
		public async Task<BuildResults> BuildAsync(IEnumerable<IProject> projects, BuildOptions options)
		{
			if (projects == null)
				throw new ArgumentNullException("projects");
			if (options == null)
				throw new ArgumentNullException("options");
			SD.MainThread.VerifyAccess();
			if (guiBuildCancellation != null) {
				BuildResults results = new BuildResults();
				SD.StatusBar.SetMessage(ResourceService.GetString("MainWindow.CompilerMessages.MSBuildAlreadyRunning"));
				BuildError error = new BuildError(null, ResourceService.GetString("MainWindow.CompilerMessages.MSBuildAlreadyRunning"));
				results.Add(error);
				TaskService.Add(new SDTask(error));
				results.Result = BuildResultCode.MSBuildAlreadyRunning;
				return results;
			}
			var projectsList = projects.ToList();
			guiBuildCancellation = new CancellationTokenSource();
			try {
				using (var progressMonitor = SD.StatusBar.CreateProgressMonitor(guiBuildCancellation.Token)) {
					if (BuildStarted != null)
						BuildStarted(this, new BuildEventArgs(projectsList, options));
					
					var trackedFeature = SD.AnalyticsMonitor.TrackFeature("ICSharpCode.SharpDevelop.Project.BuildEngine.Build");
					SD.StatusBar.SetMessage(StringParser.Parse("${res:MainWindow.CompilerMessages.BuildVerb}..."));
					IBuildable buildable;
					if (projectsList.Count == 1)
						buildable = projectsList[0];
					else
						buildable = new MultipleProjectBuildable(projectsList);
					
					buildable = buildModifiedProjectsOnly.WrapBuildable(buildable, options.BuildDetection);
					
					var sink = new UIBuildFeedbackSink(SD.OutputPad.BuildCategory, SD.StatusBar);
					// Actually run the build:
					var results = await BuildEngine.BuildAsync(buildable, options, sink, progressMonitor);
					
					string message;
					if (results.Result == BuildResultCode.Cancelled) {
						message = "${res:MainWindow.CompilerMessages.BuildCancelled}";
					} else {
						if (results.Result == BuildResultCode.Success)
							message = "${res:MainWindow.CompilerMessages.BuildFinished}";
						else
							message = "${res:MainWindow.CompilerMessages.BuildFailed}";
						
						if (results.ErrorCount > 0)
							message += " " + results.ErrorCount + " error(s)";
						if (results.WarningCount > 0)
							message += " " + results.WarningCount + " warning(s)";
					}
					SD.StatusBar.SetMessage(message);
					trackedFeature.EndTracking();
					if (BuildFinished != null)
						BuildFinished(this, new BuildEventArgs(projectsList, options, results));
					
					return results;
				}
			} finally {
				guiBuildCancellation = null;
			}
		}
コード例 #19
0
        /// <summary>
        /// Starts to run a build.
        /// </summary>
        /// <param name="project">The project/solution to build</param>
        /// <param name="options">The build options that should be used</param>
        /// <param name="realtimeBuildFeedbackSink">The build feedback sink that receives the build output.
        /// The output is nearly sent "as it comes in": sometimes output must wait because the BuildEngine
        /// will ensure that output from two projects building in parallel isn't interleaved.</param>
        /// <param name="progressMonitor">The progress monitor that receives build progress.</param>
        public static void StartBuild(IBuildable project, BuildOptions options, IBuildFeedbackSink realtimeBuildFeedbackSink, IProgressMonitor progressMonitor)
        {
            if (project == null)
            {
                throw new ArgumentNullException("solution");
            }
            if (options == null)
            {
                throw new ArgumentNullException("options");
            }

            Solution solution = project.ParentSolution;

            if (solution == null)
            {
                throw new ArgumentException("project.ParentSolution must not be null", "project");
            }

            if (string.IsNullOrEmpty(options.SolutionConfiguration))
            {
                options.SolutionConfiguration = solution.Preferences.ActiveConfiguration;
            }
            if (string.IsNullOrEmpty(options.SolutionPlatform))
            {
                options.SolutionPlatform = solution.Preferences.ActivePlatform;
            }

            BuildEngine engine = new BuildEngine(options, project);

            engine.buildStart = DateTime.Now;
            engine.combinedBuildFeedbackSink = realtimeBuildFeedbackSink;
            engine.progressMonitor           = progressMonitor;
            try {
                engine.rootNode = engine.CreateBuildGraph(project);
            } catch (CyclicDependencyException ex) {
                if (ex.Project1 != null && ex.Project2 != null)
                {
                    engine.results.Add(new BuildError(null, "Cyclic dependency between " + ex.Project1.Name + " and " + ex.Project2.Name));
                }
                else
                {
                    engine.results.Add(new BuildError(null, "Cyclic dependency"));
                }
                engine.results.Result = BuildResultCode.BuildFileError;
                engine.ReportDone();
                return;
            }

            engine.workersToStart = options.ParallelProjectCount;
            if (engine.workersToStart < 1)
            {
                engine.workersToStart = 1;
            }

            if (progressMonitor != null)
            {
                progressMonitor.Cancelled += engine.BuildCancelled;
                progressMonitor.BeginTask("", engine.nodeDict.Count, true);
            }

            engine.ReportMessageInternal("${res:MainWindow.CompilerMessages.BuildStarted}");
            engine.StartBuildProjects();
            engine.UpdateProgressTaskName();
        }
コード例 #20
0
ファイル: BuildService.cs プロジェクト: Paccc/SharpDevelop
		public Task<BuildResults> BuildInBackgroundAsync(IBuildable buildable, BuildOptions options, IBuildFeedbackSink buildFeedbackSink, IProgressMonitor progressMonitor)
		{
			return BuildEngine.BuildAsync(buildable, options, buildFeedbackSink, progressMonitor);
		}
コード例 #21
0
ファイル: BuildService.cs プロジェクト: Paccc/SharpDevelop
		public Task<BuildResults> BuildAsync(ISolution solution, BuildOptions options)
		{
			if (solution != null) {
				var solutionConfiguration = new ConfigurationAndPlatform(options.SolutionConfiguration ?? solution.ActiveConfiguration.Configuration,
			                                                         options.SolutionPlatform ?? solution.ActiveConfiguration.Platform);
				return BuildAsync(solution.Projects.Where(p => p.ConfigurationMapping.IsBuildEnabled(solutionConfiguration)), options);
			} else {
				return Task.FromResult(new BuildResults { Result = BuildResultCode.Error });
			}
		}
コード例 #22
0
ファイル: BuildService.cs プロジェクト: Paccc/SharpDevelop
		public Task<BuildResults> BuildAsync(IProject project, BuildOptions options)
		{
			if (project != null)
				return BuildAsync(new[] { project }, options);
			else
				return Task.FromResult(new BuildResults { Result = BuildResultCode.Error });
		}
コード例 #23
0
		public virtual ProjectBuildOptions CreateProjectBuildOptions(BuildOptions options, bool isRootBuildable)
		{
			if (options == null)
				throw new ArgumentNullException("options");
			// start of default implementation
			var configMatchings = this.ParentSolution.GetActiveConfigurationsAndPlatformsForProjects(options.SolutionConfiguration, options.SolutionPlatform);
			ProjectBuildOptions projectOptions = new ProjectBuildOptions(isRootBuildable ? options.ProjectTarget : options.TargetForDependencies);
			projectOptions.BuildOutputVerbosity = options.BuildOutputVerbosity;
			// find the project configuration
			foreach (var matching in configMatchings) {
				if (matching.Project == this) {
					projectOptions.Configuration = matching.Configuration;
					projectOptions.Platform = matching.Platform;
				}
			}
			// fall back to solution config if we don't find any entries for the project
			if (string.IsNullOrEmpty(projectOptions.Configuration))
				projectOptions.Configuration = options.SolutionConfiguration;
			if (string.IsNullOrEmpty(projectOptions.Platform))
				projectOptions.Platform = options.SolutionPlatform;
			
			// copy global properties to project options
			foreach (var pair in options.GlobalAdditionalProperties)
				projectOptions.Properties[pair.Key] = pair.Value;
			if (isRootBuildable) {
				// copy properties for root project to project options
				foreach (var pair in options.ProjectAdditionalProperties) {
					projectOptions.Properties[pair.Key] = pair.Value;
				}
			}
			return projectOptions;
		}
コード例 #24
0
		public BuildEventArgs(IBuildable buildable, BuildOptions options)
			: this(buildable, options, null)
		{
		}
コード例 #25
0
 public ProjectBuildOptions CreateProjectBuildOptions(BuildOptions options, bool isRootBuildable)
 {
     return(wrapped.CreateProjectBuildOptions(options, isRootBuildable));
 }
コード例 #26
0
 public BuildEventArgs(IReadOnlyList <IProject> projects, BuildOptions options)
     : this(projects, options, null)
 {
 }
コード例 #27
0
ファイル: BuildEngine.cs プロジェクト: Altaxo/Altaxo
			public void Done(IBuildable buildable, BuildOptions options, BuildResults results)
			{
				WorkbenchSingleton.SafeThreadAsyncCall(
					delegate {
						guiBuildCancellation = null;
						if (guiBuildTrackedFeature != null) {
							guiBuildTrackedFeature.EndTracking();
							guiBuildTrackedFeature = null;
						}
						string message;
						if (results.Result == BuildResultCode.Cancelled) {
							message = "${res:MainWindow.CompilerMessages.BuildCancelled}";
						} else {
							if (results.Result == BuildResultCode.Success)
								message = "${res:MainWindow.CompilerMessages.BuildFinished}";
							else
								message = "${res:MainWindow.CompilerMessages.BuildFailed}";
							
							if (results.ErrorCount > 0)
								message += " " + results.ErrorCount + " error(s)";
							if (results.WarningCount > 0)
								message += " " + results.WarningCount + " warning(s)";
						}
						statusBarService.SetMessage(message);
						ProjectService.RaiseEventBuildFinished(new BuildEventArgs(buildable, options, results));
					});
			}
コード例 #28
0
		public ProjectBuildOptions CreateProjectBuildOptions(BuildOptions options, bool isRootBuildable)
		{
			throw new NotImplementedException();
		}
コード例 #29
0
ファイル: BuildEngine.cs プロジェクト: Altaxo/Altaxo
		private BuildEngine(BuildOptions options, IBuildable rootProject)
		{
			this.options = options;
			this.rootProject = rootProject;
		}
コード例 #30
0
			public void Done(IBuildable buildable, BuildOptions options, BuildResults results)
			{
				WorkbenchSingleton.SafeThreadAsyncCall(
					delegate {
						guiBuildProgressMonitor = null;
						GuiBuildFinished.RaiseEvent(null, new BuildEventArgs(buildable, options, results));
					});
			}
コード例 #31
0
			public ProjectBuildOptions CreateProjectBuildOptions(BuildOptions options, bool isRootBuildable)
			{
				return wrapped.CreateProjectBuildOptions(options, isRootBuildable);
			}
コード例 #32
0
 private BuildEngine(BuildOptions options, IBuildable rootProject)
 {
     this.options     = options;
     this.rootProject = rootProject;
 }
コード例 #33
0
		public override ProjectBuildOptions CreateProjectBuildOptions(BuildOptions options, bool isRootBuildable)
		{
			ProjectBuildOptions projectOptions = base.CreateProjectBuildOptions(options, isRootBuildable);
			Solution solution = this.ParentSolution;
			var configMatchings = solution.GetActiveConfigurationsAndPlatformsForProjects(options.SolutionConfiguration, options.SolutionPlatform);
			// Find the project configuration, and build an XML string containing all configurations from the solution
			StringWriter solutionConfigurationXml = new StringWriter();
			using (XmlTextWriter solutionConfigurationWriter = new XmlTextWriter(solutionConfigurationXml)) {
				solutionConfigurationWriter.WriteStartElement("SolutionConfiguration");
				foreach (var matching in configMatchings) {
					solutionConfigurationWriter.WriteStartElement("ProjectConfiguration");
					solutionConfigurationWriter.WriteAttributeString("Project", matching.Project.IdGuid);
					solutionConfigurationWriter.WriteValue(matching.Configuration + "|" + MSBuildInternals.FixPlatformNameForProject(matching.Platform));
					solutionConfigurationWriter.WriteEndElement();
				}
				solutionConfigurationWriter.WriteEndElement();
			}
			// Set property for solution configuration. This allows MSBuild to know the correct configuration for project references,
			// which is necessary to resolve the referenced project's OutputPath.
			projectOptions.Properties["CurrentSolutionConfigurationContents"] = solutionConfigurationXml.ToString();
			
			solution.AddMSBuildSolutionProperties(projectOptions.Properties);
			
			return projectOptions;
		}
コード例 #34
0
ファイル: Solution.cs プロジェクト: xuchuansheng/GenXSource
		public void StartBuild(BuildOptions options)
		{
			MSBuildBasedProject.RunMSBuild(this, null,
			                               this.Preferences.ActiveConfiguration,
			                               this.Preferences.ActivePlatform,
			                               options);
		}
コード例 #35
0
		public BuildEventArgs(IBuildable buildable, BuildOptions options, BuildResults results)
		{
			if (buildable == null)
				throw new ArgumentNullException("buildable");
			if (options == null)
				throw new ArgumentNullException("options");
			this.Buildable = buildable;
			this.Options = options;
			this.Results = results;
		}
コード例 #36
0
 public virtual void StartBuild(BuildOptions options)
 {
 }