You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							24 lines
						
					
					
						
							1.4 KiB
						
					
					
				
			
		
		
	
	
							24 lines
						
					
					
						
							1.4 KiB
						
					
					
				The SharpDevelop Build System | 
						|
 | 
						|
=Build scheduling engine= | 
						|
 | 
						|
Main class: ICSharpCode.SharpDevelop.Project.BuildEngine | 
						|
 | 
						|
The scheduling engine component is usable independently from the project system. | 
						|
Its main task is to take an IBuildable instance, determine its dependencies, and build everything | 
						|
by calling IBuildable.StartBuild. | 
						|
 | 
						|
Usage: | 
						|
 BuildEngine.StartBuild(buildable, buildOptions, buildFeedbackSink); | 
						|
 | 
						|
What the build engine will do is to call | 
						|
 buildable.StartBuild(buildable.CreateProjectBuildOptions(buildOptions)) | 
						|
for the passed buildable (and for all of its dependencies). | 
						|
 | 
						|
The build engine uses GetDependencies calls to build the full dependency graph. It splits up all projects in this graph into two sets: | 
						|
projects which have no dependencies and are ready to be built, and projects which need to wait for dependencies first. | 
						|
The build engine calls StartBuild concurrently on up to buildOptions.ParallelBuild* projects which are ready. Whenever a project finishes building sucessfully, | 
						|
the engine checks whether this causes any other projects to become available to be built. | 
						|
If there are more projects available to be built than parallel builds are allowed, then the scheduling algorithm tries to maximize the amount of projects | 
						|
that are available in the future by first picking those projects that cause the most other projects to become available | 
						|
(have the most projects depending on them).
 | 
						|
 |