| File: IBuildEngine2.cs | Web Access |
| Project: src\msbuild\src\Framework\Microsoft.Build.Framework.csproj (Microsoft.Build.Framework) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Collections; #nullable disable namespace Microsoft.Build.Framework { /// <summary> /// This interface extends IBuildEngine to provide a method allowing building /// project files in parallel. /// </summary> public interface IBuildEngine2 : IBuildEngine { /// <summary> /// This property allows a task to query whether or not the system is running in single process mode or multi process mode. /// Single process mode (IsRunningMultipleNodes = false) is where the engine is initialized with the number of cpus = 1 and the engine is not a child engine. /// The engine is in multi process mode (IsRunningMultipleNodes = true) when the engine is initialized with a number of cpus > 1 or the engine is a child engine. /// </summary> bool IsRunningMultipleNodes { get; } /// <summary> /// This method allows tasks to initiate a build on a /// particular project file. If the build is successful, the outputs /// (if any) of the specified targets are returned. /// </summary> /// <remarks> /// 1) it is acceptable to pass null for both <c>targetNames</c> and <c>targetOutputs</c> /// 2) if no targets are specified, the default targets are built /// 3) target outputs are returned as <c>ITaskItem</c> arrays indexed by target name /// </remarks> /// <param name="projectFileName">The project to build.</param> /// <param name="targetNames">The targets in the project to build (can be null).</param> /// <param name="globalProperties">A hash table of additional global properties to apply /// to the child project (can be null). The key and value should both be strings.</param> /// <param name="targetOutputs">The outputs of each specified target (can be null).</param> /// <param name="toolsVersion">A tools version recognized by the Engine that will be used during this build (can be null).</param> /// <returns>true, if build was successful</returns> bool BuildProjectFile( string projectFileName, string[] targetNames, IDictionary globalProperties, IDictionary targetOutputs, string toolsVersion); /// <summary> /// This method allows tasks to initiate a build on a /// particular project file. If the build is successful, the outputs /// (if any) of the specified targets are returned. /// </summary> /// <remarks> /// 1) it is acceptable to pass null for both <c>targetNames</c> and <c>targetOutputs</c> /// 2) if no targets are specified, the default targets are built /// 3) target outputs are returned as <c>ITaskItem</c> arrays indexed by target name /// </remarks> /// <param name="projectFileNames">The project to build.</param> /// <param name="targetNames">The targets in the project to build (can be null).</param> /// <param name="globalProperties">An array of hashtables of additional global properties to apply /// to the child project (array entries can be null). /// The key and value in the hashtable should both be strings.</param> /// <param name="targetOutputsPerProject">The outputs of each specified target (can be null).</param> /// <param name="toolsVersion">A tools version recognized by the Engine that will be used during this build (can be null).</param> /// <param name="useResultsCache">If true the operation will only be run if the cache doesn't /// already contain the result. After the operation the result is /// stored in the cache </param> /// <param name="unloadProjectsOnCompletion">If true the project will be unloaded once the /// operation is completed </param> /// <returns>true, if build was successful</returns> bool BuildProjectFilesInParallel( string[] projectFileNames, string[] targetNames, IDictionary[] globalProperties, IDictionary[] targetOutputsPerProject, string[] toolsVersion, bool useResultsCache, bool unloadProjectsOnCompletion); } }