Microsoft.Build.Framework This structure is used to return the result of the build and the target outputs. Did the build pass or fail Target outputs by project The constructor takes the result of the build and a list of the target outputs per project Did the build pass or fail. True means the build succeeded, False means the build failed. Outputs of the targets per project. Arguments for error events Subcategory of the error Error code File name The project which issued the event Line number Column number End line number End column number A link pointing to more information about the error This constructor allows all event data to be initialized event sub-category event code file associated with the event line number (0 if not applicable) column number (0 if not applicable) end line number (0 if not applicable) end column number (0 if not applicable) text message help keyword name of event sender This constructor which allows a timestamp to be set event sub-category event code file associated with the event line number (0 if not applicable) column number (0 if not applicable) end line number (0 if not applicable) end column number (0 if not applicable) text message help keyword name of event sender Timestamp when event was created This constructor which allows a timestamp to be set event sub-category event code file associated with the event line number (0 if not applicable) column number (0 if not applicable) end line number (0 if not applicable) end column number (0 if not applicable) text message help keyword name of event sender Timestamp when event was created message arguments This constructor which allows a timestamp to be set event sub-category event code file associated with the event line number (0 if not applicable) column number (0 if not applicable) end line number (0 if not applicable) end column number (0 if not applicable) text message help keyword A link pointing to more information about the error name of event sender Timestamp when event was created message arguments Default constructor The custom sub-type of the event. Code associated with event. File associated with event. The project file which issued this event. Line number of interest in associated file. Column number of interest in associated file. Ending line number of interest in associated file. Ending column number of interest in associated file. A link pointing to more information about the error. Serializes to a stream through a binary writer Binary writer which is attached to the stream the event will be serialized into Deserializes to a stream through a binary writer Binary reader which the object will be deserialized from The version of the runtime the message packet was created from This class encapsulates the default data associated with build events. It is intended to be extended/sub-classed. Message Help keyword Sender name Timestamp Thread id Build event context Default constructor This constructor allows all event data to be initialized text message help keyword name of event sender This constructor allows all event data to be initialized while providing a custom timestamp. text message help keyword name of event sender TimeStamp of when the event was created The time when event was raised. Exposes the private field to derived types. Used for serialization. Avoids the side effects of calling the getter. The thread that raised event. Text of event. Exposes the underlying message field without side-effects. Used for serialization. Custom help keyword associated with event. Name of the object sending this event. Event contextual information for the build event argument Serializes to a stream through a binary writer Binary writer which is attached to the stream the event will be serialized into Deserializes from a stream through a binary reader Binary reader which is attached to the stream the event will be deserialized from The version of the runtime the message packet was created from Run before the object has been deserialized UNDONE (Logging.) Can this and the next function go away, and instead return a BuildEventContext.Invalid from the property if the buildEventContext field is null? Run after the object has been deserialized This is the default stub implementation, only here as a safeguard. Actual logic is injected from Microsoft.Build.dll to replace this. This is used by the Message property overrides to reconstruct the message lazily on demand. Shortcut method to mimic the original logic of creating the formatted strings. Name of the resource string. Optional list of arguments to pass to the formatted string. The concatenated formatted string. Will provide location information for an event, this is especially needed in a multi processor environment Node event was in Target event was in The node-unique project request context the event was in Id of the task the event was caused from The id of the project instance to which this event refers. The id of the submission. The id of the evaluation This is the original constructor. No one should ever use this except internally for backward compatibility. Constructs a BuildEventContext with a specified project instance id. Constructs a BuildEventContext with a specific submission id Constructs a BuildEventContext Returns a default invalid BuildEventContext Retrieves the Evaluation id. NodeId where event took place Id of the target the event was in when the event was fired Retrieves the Project Context id. Retrieves the task id. Retrieves the project instance id. Retrieves the Submission id. Retrieves the BuildRequest id. Note that this is not the same as the global request id on a BuildRequest or BuildResult. Indicates an invalid project context identifier. Indicates an invalid task identifier. Indicates an invalid target identifier. Indicates an invalid node identifier. Indicates an invalid project instance identifier. Indicates an invalid submission identifier. Indicates an invalid evaluation identifier. Retrieves a hash code for this BuildEventContext. Compare a BuildEventContext with this BuildEventContext. A build event context is compared in the following way. 1. If the object references are the same the contexts are equivalent 2. If the object type is the same and the Id values in the context are the same, the contexts are equivalent Override == so the equals comparison using this operator will be the same as .Equals Left hand side operand Right hand side operand True if the object values are identical, false if they are not identical Override != so the equals comparison using this operator will be the same as ! Equals Left hand side operand Right hand side operand True if the object values are not identical, false if they are identical Verify the fields are identical BuildEventContext to compare to this instance True if the value fields are the same, false if otherwise This class represents the event arguments for build finished events. Whether the build succeeded Default constructor Constructor to initialize all parameters. Sender field cannot be set here and is assumed to be "MSBuild" text message help keyword True indicates a successful build Constructor which allows the timestamp to be set text message help keyword True indicates a successful build Timestamp when the event was created Constructor which allows the timestamp to be set text message help keyword True indicates a successful build Timestamp when the event was created message arguments Serializes to a stream through a binary writer Binary writer which is attached to the stream the event will be serialized into Deserializes from a stream through a binary reader Binary reader which is attached to the stream the event will be deserialized from The version of the runtime the message packet was created from Succeeded is true if the build succeeded; false otherwise. This enumeration provides three levels of importance for messages. High importance, appears in less verbose logs Normal importance Low importance, appears in more verbose logs Arguments for message events Default constructor This constructor allows all event data to be initialized text message help keyword name of event sender importance of the message This constructor allows a timestamp to be set text message help keyword name of event sender importance of the message Timestamp when event was created This constructor allows a timestamp to be set text message help keyword name of event sender importance of the message Timestamp when event was created message arguments This constructor allows all event data to be initialized event subcategory event code file associated with the event line number (0 if not applicable) column number (0 if not applicable) end line number (0 if not applicable) end column number (0 if not applicable) text message help keyword name of event sender importance of the message This constructor allows timestamp to be set event subcategory event code file associated with the event line number (0 if not applicable) column number (0 if not applicable) end line number (0 if not applicable) end column number (0 if not applicable) text message help keyword name of event sender importance of the message custom timestamp for the event This constructor allows timestamp to be set event subcategory event code file associated with the event line number (0 if not applicable) column number (0 if not applicable) end line number (0 if not applicable) end column number (0 if not applicable) text message help keyword name of event sender importance of the message custom timestamp for the event message arguments Serializes to a stream through a binary writer Binary writer which is attached to the stream the event will be serialized into Deserializes from a stream through a binary reader Binary reader which is attached to the stream the event will be deserialized from The version of the runtime the message packet was created from Importance of the message The custom sub-type of the event. Code associated with event. File associated with event. Line number of interest in associated file. Column number of interest in associated file. Ending line number of interest in associated file. Ending column number of interest in associated file. The project which was building when the message was issued. Arguments for build started events. Default constructor Constructor to initialize all parameters. Sender field cannot be set here and is assumed to be "MSBuild" text message help keyword Constructor to initialize all parameters. Sender field cannot be set here and is assumed to be "MSBuild" text message help keyword A dictionary which lists the environment of the build when the build is started. Constructor to allow timestamp to be set text message help keyword Timestamp when the event was created Constructor to allow timestamp to be set text message help keyword Timestamp when the event was created message args The environment which is used at the start of the build Base class for build status events. This class is meant to be extended. WARNING: marking a type [Serializable] without implementing ISerializable imposes a serialization contract -- it is a promise to never change the type's fields i.e. the type is immutable; adding new fields in the next version of the type without following certain special FX guidelines, can break both forward and backward compatibility Default constructor This constructor allows event data to be initialized. text message help keyword name of event sender This constructor allows timestamp to be set text message help keyword name of event sender Timestamp when event was created This constructor allows timestamp to be set text message help keyword name of event sender Timestamp when event was created Optional arguments for formatting the message string. Arguments for warning events Default constructor This constructor allows all event data to be initialized event subcategory event code file associated with the event line number (0 if not applicable) column number (0 if not applicable) end line number (0 if not applicable) end column number (0 if not applicable) text message help keyword name of event sender This constructor allows timestamp to be set event subcategory event code file associated with the event line number (0 if not applicable) column number (0 if not applicable) end line number (0 if not applicable) end column number (0 if not applicable) text message help keyword name of event sender custom timestamp for the event This constructor allows timestamp to be set event subcategory event code file associated with the event line number (0 if not applicable) column number (0 if not applicable) end line number (0 if not applicable) end column number (0 if not applicable) text message help keyword name of event sender custom timestamp for the event message arguments This constructor allows timestamp to be set event subcategory event code file associated with the event line number (0 if not applicable) column number (0 if not applicable) end line number (0 if not applicable) end column number (0 if not applicable) text message help keyword A link pointing to more information about the warning name of event sender custom timestamp for the event message arguments Serializes the Errorevent to a stream through a binary writer Binary writer which is attached to the stream the event will be serialized into Deserializes from a stream through a binary reader Binary reader which is attached to the stream the event will be deserialized from The version of the runtime the message packet was created from The custom sub-type of the event. Code associated with event. File associated with event. Line number of interest in associated file. Column number of interest in associated file. Ending line number of interest in associated file. Ending column number of interest in associated file. The project which was building when the message was issued. A link pointing to more information about the warning. Arguments for critical message events. These always have High importance. This constructor allows all event data to be initialized event subcategory event code file associated with the event line number (0 if not applicable) column number (0 if not applicable) end line number (0 if not applicable) end column number (0 if not applicable) text message help keyword name of event sender This constructor allows timestamp to be set event subcategory event code file associated with the event line number (0 if not applicable) column number (0 if not applicable) end line number (0 if not applicable) end column number (0 if not applicable) text message help keyword name of event sender custom timestamp for the event This constructor allows timestamp to be set event subcategory event code file associated with the event line number (0 if not applicable) column number (0 if not applicable) end line number (0 if not applicable) end column number (0 if not applicable) text message help keyword name of event sender custom timestamp for the event message arguments Default constructor Arguments for custom build events. Default constructor This constructor allows event data to be initialized. text message help keyword name of sender This constructor allows event data to be initialized including timestamp. text message help keyword name of sender Timestamp when event was created This constructor allows event data to be initialized including timestamp. text message help keyword name of sender Timestamp when event was created Message arguments Arguments for the environment variable read event. Initializes an instance of the EnvironmentVariableReadEventArgs class. Initializes an instance of the EnvironmentVariableReadEventArgs class. The name of the environment variable that was read. The value of the environment variable that was read. Help keyword. The name of the sender of the event. The importance of the message. The name of the environment variable that was read. Arguments for external project finished events Default constructor Useful constructor text message help keyword name of the object sending this event project name true indicates project built successfully Useful constructor including the ability to set the timestamp text message help keyword name of the object sending this event project name true indicates project built successfully Timestamp when event was created Project name True if project built successfully, false otherwise Arguments for external project started events Default constructor Useful constructor text message help keyword name of the object sending this event project name targets we are going to build (empty indicates default targets) Useful constructor, including the ability to set the timestamp of the event text message help keyword name of the object sending this event project name targets we are going to build (empty indicates default targets) Timestamp when the event was created Project name Targets that we will build in the project. This may mean different things for different project types, our tasks will put something like Rebuild, Clean, etc. here. This may be null if the project is being built with the default target. This interface exposes functionality on the build engine that is required for task authoring. Allows tasks to raise error events to all registered loggers. The build engine may perform some filtering or pre-processing on the events, before dispatching them. Details of event to raise. Allows tasks to raise warning events to all registered loggers. The build engine may perform some filtering or pre-processing on the events, before dispatching them. Details of event to raise. Allows tasks to raise message events to all registered loggers. The build engine may perform some filtering or pre-processing on the events, before dispatching them. Details of event to raise. Allows tasks to raise custom events to all registered loggers. The build engine may perform some filtering or pre-processing on the events, before dispatching them. Details of event to raise. Returns true if the ContinueOnError flag was set to true for this particular task in the project file. Retrieves the line number of the task node within the project file that called it. Retrieves the line number of the task node within the project file that called it. Returns the full path to the project file that contained the call to this task. 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. 1) it is acceptable to pass null for both targetNames and targetOutputs 2) if no targets are specified, the default targets are built 3) target outputs are returned as ITaskItem arrays indexed by target name The project to build. The targets in the project to build (can be null). A hash table of additional global properties to apply to the child project (can be null). The key and value should both be strings. The outputs of each specified target (can be null). true, if build was successful This interface extends IBuildEngine to provide a method allowing building project files in parallel. 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. 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. 1) it is acceptable to pass null for both targetNames and targetOutputs 2) if no targets are specified, the default targets are built 3) target outputs are returned as ITaskItem arrays indexed by target name The project to build. The targets in the project to build (can be null). A hash table of additional global properties to apply to the child project (can be null). The key and value should both be strings. The outputs of each specified target (can be null). A tools version recognized by the Engine that will be used during this build (can be null). true, if build was successful 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. 1) it is acceptable to pass null for both targetNames and targetOutputs 2) if no targets are specified, the default targets are built 3) target outputs are returned as ITaskItem arrays indexed by target name The project to build. The targets in the project to build (can be null). 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. The outputs of each specified target (can be null). A tools version recognized by the Engine that will be used during this build (can be null). 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 If true the project will be unloaded once the operation is completed true, if build was successful This interface extends IBuildEngine to provide a method allowing building project files in parallel. 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. 1) it is acceptable to pass null for both targetNames and targetOutputs 2) if no targets are specified, the default targets are built The project to build. The targets in the project to build (can be null). 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. A list of global properties which should be removed. A tools version recognized by the Engine that will be used during this build (can be null). Should the target outputs be returned in the BuildEngineResult Returns a structure containing the success or failure of the build and the target outputs by project. Informs the system that this task has a long-running out-of-process component and other work can be done in the build while that work completes. Waits to reacquire control after yielding. Defines the lifetime of a registered task object. The registered object will be disposed when the build ends. The registered object will be disposed when the AppDomain is unloaded. The AppDomain to which this refers is the one in which MSBuild was launched, not the one in which the Task was launched. This interface extends IBuildEngine to provide a mechanism allowing tasks to share data between task invocations. Registers an object with the system that will be disposed of at some specified time in the future. The key used to retrieve the object. The object to be held for later disposal. The lifetime of the object. The object may be disposed earlier that the requested time if MSBuild needs to reclaim memory. This method may be called by tasks which need to maintain state across task invocations, such as to cache data which may be expensive to generate but which is known not to change during the build. It is strongly recommended that be set to true if the object will retain any significant amount of data, as this gives MSBuild the most flexibility to manage limited process memory resources. The thread on which the object is disposed may be arbitrary - however it is guaranteed not to be disposed while the task is executing, even if is set to true. If the object implements IDisposable, IDisposable.Dispose will be invoked on the object before discarding it. Retrieves a previously registered task object stored with the specified key. The key used to retrieve the object. The lifetime of the object. The registered object, or null is there is no object registered under that key or the object has been discarded through early collection. Unregisters a previously-registered task object. The key used to retrieve the object. The lifetime of the object. The registered object, or null is there is no object registered under that key or the object has been discarded through early collection. This interface extends IBuildEngine to log telemetry. Logs telemetry. The event name. The event properties. This interface extends to allow tasks to get the current project's global properties. Gets the global properties for the current project. An containing the global properties of the current project. This interface extends to allow tasks to set whether they want to log an error when a task returns without logging an error. This interface extends to let tasks know if a warning they are about to log will be converted into an error. Determines whether the logging service will convert the specified warning code into an error. The warning code to check. A boolean to determine whether the warning should be treated as an error. This interface extends to provide resource management API to tasks. If a task launches multiple parallel processes, it should ask how many cores it can use. The number of cores a task can potentially use. The number of cores a task is allowed to use. A task should notify the build manager when all or some of the requested cores are not used anymore. When task is finished, the cores it requested are automatically released. Number of cores no longer in use. Interface for tasks which can be cancelled. Instructs the task to exit as soon as possible, or to immediately exit if Execute is invoked after this method. Cancel() may be called at any time after the task has been instantiated, even before is called. Cancel calls may come in from any thread. The implementation of this method should not block indefinitely. This interface is used to forward events to another loggers This method is called by the node loggers to forward the events to central logger Type of handler for MessageRaised events Type of handler for ErrorRaised events Type of handler for WarningRaised events Type of handler for CustomEventRaised events Type of handler for BuildStartedEvent events Type of handler for BuildFinishedEvent events Type of handler for ProjectStarted events Type of handler for ProjectFinished events Type of handler for TargetStarted events Type of handler for TargetFinished events Type of handler for TaskStarted events Type of handler for TaskFinished events Type of handler for BuildStatus events Type of handler for AnyEventRaised events This interface defines the events raised by the build engine. Loggers use this interface to subscribe to the events they are interested in receiving. this event is raised to log a message this event is raised to log an error this event is raised to log a warning this event is raised to log the start of a build this event is raised to log the end of a build this event is raised to log the start of a project build this event is raised to log the end of a project build this event is raised to log the start of a target build this event is raised to log the end of a target build this event is raised to log the start of task execution this event is raised to log the end of task execution this event is raised to log custom events this event is raised to log any build status event this event is raised to log any build event. These events do not include telemetry. To receive telemetry, you must attach to the event. Type of handler for TelemetryLogged events This interface defines the events raised by the build engine. Loggers use this interface to subscribe to the events they are interested in receiving. this event is raised to when telemetry is logged. This interface defines the events raised by the build engine. Loggers use this interface to subscribe to the events they are interested in receiving. Should evaluation events include generated metaprojects? Should evaluation events include profiling information? Should task events include task inputs? This interface defines the events raised by the build engine. Loggers use this interface to subscribe to the events they are interested in receiving. Determines whether properties and items should be logged on instead of . This interface extends the ILogger interface to provide a property which can be used to forward events to a logger running in a different process. It can also be used create filtering loggers. This property is set by the build engine to allow a node loggers to forward messages to the central logger This property is set by the build engine or node to inform the forwarding logger which node it is running on An interface implemented by tasks that are generated by ITaskFactory instances. Sets a value on a property of this task instance. The property to set. The value to set. The caller is responsible to type-coerce this value to match the property's . All exceptions from this method will be caught in the taskExecution host and logged as a fatal task error Gets the property value. The property to get. The value of the property, the value's type will match the type given by . MSBuild calls this method after executing the task to get output parameters. All exceptions from this method will be caught in the taskExecution host and logged as a fatal task error Enumeration of the levels of detail of an event log. The level of detail (i.e. verbosity) of an event log is entirely controlled by the logger generating the log -- a logger will be directed to keep its verbosity at a certain level, based on user preferences, but a logger is free to choose the events it logs for each verbosity level. LOGGING GUIDELINES FOR EACH VERBOSITY LEVEL: 1) Quiet -- only display a summary at the end of build 2) Minimal -- only display errors, warnings, high importance events and a build summary 3) Normal -- display all errors, warnings, high importance events, some status events, and a build summary 4) Detailed -- display all errors, warnings, high and normal importance events, all status events, and a build summary 5) Diagnostic -- display all events, and a build summary The most minimal output Relatively little output Standard output. This should be the default if verbosity level is not set Relatively verbose, but not exhaustive The most verbose and informative verbosity This interface defines a "logger" in the build system. A logger subscribes to build system events. All logger classes must implement this interface to be recognized by the build engine. The verbosity level directs the amount of detail that appears in a logger's event log. Though this is only a recommendation based on user preferences, and a logger is free to choose the exact events it logs, it is still important that the guidelines for each level be followed, for a good user experience. The verbosity level. This property holds the user-specified parameters to the logger. If parameters are not provided, a logger should revert to defaults. If a logger does not take parameters, it can ignore this property. The parameter string (can be null). Called by the build engine to allow loggers to subscribe to the events they desire. The events available to loggers. Called by the build engine to allow loggers to release any resources they may have allocated at initialization time, or during the build. Provides a way to efficiently enumerate item metadata Returns a list of metadata names and unescaped values, including metadata from item definition groups, but not including built-in metadata. Implementations should be low-overhead as the method is used for serialization (in node packet translator) as well as in the binary logger. This interface defines a "parallel aware logger" in the build system. A parallel aware logger will accept a cpu count and be aware that any cpu count greater than 1 means the events will be received from the logger from each cpu as the events are logged. Initializes the current instance. Interface for exposing a ProjectElement to the appropriate loggers Gets the name of the associated element. Useful for display in some circumstances. The outer markup associated with this project element This interface defines a "task" in the build system. A task is an atomic unit of build operation. All task classes must implement this interface to be recognized by the build engine. This property is set by the build engine to allow a task to call back into it. The interface on the build engine available to tasks. The build engine sets this property if the host IDE has associated a host object with this particular task. The host object instance (can be null). This method is called by the build engine to begin task execution. A task uses the return value to indicate whether it was successful. If a task throws an exception out of this method, the engine will automatically assume that the task has failed. true, if successful Interface that a task factory Instance should implement Gets the name of the factory. The name of the factory. Gets the type of the task this factory will instantiate. Implementations must return a value for this property. Initializes this factory for instantiating tasks with a particular inline task block. Name of the task. The parameter group. The task body. The task factory logging host. A value indicating whether initialization was successful. MSBuild engine will call this to initialize the factory. This should initialize the factory enough so that the factory can be asked whether or not task names can be created by the factory. The taskFactoryLoggingHost will log messages in the context of the target where the task is first used. Get the descriptions for all the task's parameters. A non-null array of property descriptions. Create an instance of the task to be used. The task factory logging host will log messages in the context of the task. The generated task, or null if the task failed to be created. Cleans up any context or state that may have been built up for a given task. The task to clean up. For many factories, this method is a no-op. But some factories may have built up an AppDomain as part of an individual task instance, and this is their opportunity to shutdown the AppDomain. Interface that a task factory Instance should implement if it wants to be able to use new UsingTask parameters such as Runtime and Architecture. Initializes this factory for instantiating tasks with a particular inline task block and a set of UsingTask parameters. MSBuild provides an implementation of this interface, TaskHostFactory, that uses "Runtime", with values "CLR2", "CLR4", "CurrentRuntime", and "*" (Any); and "Architecture", with values "x86", "x64", "CurrentArchitecture", and "*" (Any). An implementer of ITaskFactory2 can choose to use these pre-defined Runtime and Architecture values, or can specify new values for these parameters. Name of the task. Special parameters that the task factory can use to modify how it executes tasks, such as Runtime and Architecture. The key is the name of the parameter and the value is the parameter's value. This is the set of parameters that was set on the UsingTask using e.g. the UsingTask Runtime and Architecture parameters. The parameter group. The task body. The task factory logging host. A value indicating whether initialization was successful. MSBuild engine will call this to initialize the factory. This should initialize the factory enough so that the factory can be asked whether or not task names can be created by the factory. If a task factory implements ITaskFactory2, this Initialize method will be called in place of ITaskFactory.Initialize. The taskFactoryLoggingHost will log messages in the context of the target where the task is first used. Create an instance of the task to be used, with an optional set of "special" parameters set on the individual task invocation using the MSBuildRuntime and MSBuildArchitecture default task parameters. MSBuild provides an implementation of this interface, TaskHostFactory, that uses "MSBuildRuntime", with values "CLR2", "CLR4", "CurrentRuntime", and "*" (Any); and "MSBuildArchitecture", with values "x86", "x64", "CurrentArchitecture", and "*" (Any). An implementer of ITaskFactory2 can choose to use these pre-defined MSBuildRuntime and MSBuildArchitecture values, or can specify new values for these parameters. The task factory logging host will log messages in the context of the task. Special parameters that the task factory can use to modify how it executes tasks, such as Runtime and Architecture. The key is the name of the parameter and the value is the parameter's value. This is the set of parameters that was set to the task invocation itself, via e.g. the special MSBuildRuntime and MSBuildArchitecture parameters. If a task factory implements ITaskFactory2, MSBuild will call this method instead of ITaskFactory.CreateTask. The generated task, or null if the task failed to be created. This empty interface is used to pass host objects from an IDE to individual tasks. Depending on the task itself and what kinds parameters and functionality it exposes, the task should define its own interface that inherits from this one, and then use that interface to communicate with the host. This interface defines a project item that can be consumed and emitted by tasks. Gets or sets the item "specification" e.g. for disk-based items this would be the file path. This should be named "EvaluatedInclude" but that would be a breaking change to this interface. The item-spec string. Gets the names of all the metadata on the item. Includes the built-in metadata like "FullPath". The list of metadata names. Gets the number of pieces of metadata on the item. Includes both custom and built-in metadata. Count of pieces of metadata. Allows the values of metadata on the item to be queried. The name of the metadata to retrieve. The value of the specified metadata. Allows a piece of custom metadata to be set on the item. The name of the metadata to set. The metadata value. Allows the removal of custom metadata set on the item. The name of the metadata to remove. Allows custom metadata on the item to be copied to another item. RECOMMENDED GUIDELINES FOR METHOD IMPLEMENTATIONS: 1) this method should NOT copy over the item-spec 2) if a particular piece of metadata already exists on the destination item, it should NOT be overwritten 3) if there are pieces of metadata on the item that make no semantic sense on the destination item, they should NOT be copied The item to copy metadata to. Get the collection of custom metadata. This does not include built-in metadata. RECOMMENDED GUIDELINES FOR METHOD IMPLEMENTATIONS: 1) this method should return a clone of the metadata 2) writing to this dictionary should not be reflected in the underlying item. Dictionary of cloned metadata This interface adds escaping support to the ITaskItem interface. Gets or sets the item include value e.g. for disk-based items this would be the file path. Taking the opportunity to fix the property name, although this doesn't make it obvious it's an improvement on ItemSpec. Allows the values of metadata on the item to be queried. Taking the opportunity to fix the property name, although this doesn't make it obvious it's an improvement on GetMetadata. Allows a piece of custom metadata to be set on the item. Assumes that the value passed in is unescaped, and escapes the value as necessary in order to maintain its value. Taking the opportunity to fix the property name, although this doesn't make it obvious it's an improvement on SetMetadata. ITaskItem2 implementation which returns a clone of the metadata on this object. Values returned are in their original escaped form. The cloned metadata, with values' escaping preserved. Provides a way to efficiently enumerate custom metadata of an item, without built-in metadata. TaskItem implementation to return metadata from WARNING: do NOT use List`1.AddRange to iterate over this collection. CopyOnWriteDictionary from Microsoft.Build.Utilities.v4.0.dll is broken. A non-null (but possibly empty) enumerable of item metadata. Stores strings for parts of a message delaying the formatting until it needs to be shown Stores the message arguments. Exposes the underlying arguments field to serializers. Stores the original culture for String.Format. Non-serializable CultureInfo object Lock object. This constructor allows all event data to be initialized. text message. help keyword. name of event sender. This constructor that allows message arguments that are lazily formatted. text message. help keyword. name of event sender. Timestamp when event was created. Message arguments. Default constructor. Gets the formatted message. Serializes to a stream through a binary writer. Binary writer which is attached to the stream the event will be serialized into. Deserializes from a stream through a binary reader. Binary reader which is attached to the stream the event will be deserialized from. The version of the runtime the message packet was created from Formats the given string using the variable arguments passed in. PERF WARNING: calling a method that takes a variable number of arguments is expensive, because memory is allocated for the array of arguments -- do not call this method repeatedly in performance-critical scenarios This method is thread-safe. The culture info for formatting the message. The string to format. Optional arguments for formatting the given string. The formatted string. Deserialization does not call any constructors, not even the parameterless constructor. Therefore since we do not serialize this field, we must populate it here. This attribute is used to mark tasks that need to be run in their own app domains. The build engine will create a new app domain each time it needs to run such a task, and immediately unload it when the task is finished. Default constructor. Exception that should be thrown by a logger when it cannot continue. Allows a logger to force the build to stop in an explicit way, when, for example, it receives invalid parameters, or cannot write to disk. Default constructor. This constructor only exists to satisfy .NET coding guidelines. Use the rich constructor instead. Creates an instance of this exception using the specified error message. Message string Creates an instance of this exception using the specified error message and inner exception. Message string Inner exception. Can be null Creates an instance of this exception using rich error information. Message string Inner exception. Can be null Error code Help keyword for host IDE. Can be null Protected constructor used for (de)serialization. If we ever add new members to this class, we'll need to update this. Serialization info Streaming context ISerializable method which we must override since Exception implements this interface If we ever add new members to this class, we'll need to update this. Serialization info Streaming context Gets the error code associated with this exception's message (not the inner exception). The error code string. Gets the F1-help keyword associated with this error, for the host IDE. The keyword string. Arguments for the metaproject generated event. Raw xml representing the metaproject. Initializes a new instance of the MetaprojectGeneratedEventArgs class. This attribute is used by task writers to designate certain task parameters as "outputs". The build engine will only allow task parameters (i.e. the task class' .NET properties) that are marked with this attribute to output data from a task. Project authors can only use parameters marked with this attribute in a task's <Output> tag. All task parameters, including those marked with this attribute, may be treated as inputs to a task by the build engine. Default constructor. Assigns unique evaluation ids. Thread safe. Returns a unique evaluation id The id is guaranteed to be unique across all running processes. Additionally, it is monotonically increasing for callers on the same process id Evaluation main phases used by the profiler Order matters since the profiler pretty printer orders profiled items from top to bottom using the pass they belong to The kind of the evaluated location being tracked Represents a location for different evaluation elements tracked by the EvaluationProfiler. Default descriptions for locations that are used in case a description is not provided Constructs a generic evaluation location Used by serialization/deserialization purposes Constructs a generic evaluation location based on a (possibly null) parent Id. A unique Id gets assigned automatically Used by serialization/deserialization purposes Constructs a generic evaluation location with no parent. A unique Id gets assigned automatically Used by serialization/deserialization purposes An empty location, used as the starting instance. Result of profiling an evaluation Result of timing the evaluation of a given element at a given location Arguments for the project evaluation finished event. Initializes a new instance of the ProjectEvaluationFinishedEventArgs class. Initializes a new instance of the ProjectEvaluationFinishedEventArgs class. Gets or sets the full path of the project that started evaluation. Global properties used during this evaluation. Final set of properties produced by this evaluation. Final set of items produced by this evaluation. The result of profiling a project. Null if profiling is not turned on Arguments for the project evaluation started event. Initializes a new instance of the ProjectEvaluationStartedEventArgs class. Initializes a new instance of the ProjectEvaluationStartedEventArgs class. Gets or sets the full path of the project that started evaluation. Arguments for project finished events Default constructor This constructor allows event data to be initialized. Sender is assumed to be "MSBuild". text message help keyword name of the project true indicates project built successfully This constructor allows event data to be initialized. Sender is assumed to be "MSBuild". This constructor allows the timestamp to be set as well text message help keyword name of the project true indicates project built successfully Timestamp when the event was created Serializes to a stream through a binary writer Binary writer which is attached to the stream the event will be serialized into Deserializes from a stream through a binary reader Binary reader which is attached to the stream the event will be deserialized from The version of the runtime the message packet was created from Project name True if project built successfully, false otherwise Arguments for the project imported event. Initializes a new instance of the ProjectImportedEventArgs class. Initializes a new instance of the ProjectImportedEventArgs class. Gets or sets the original value of the Project attribute. Gets or sets the full path to the project file that was imported. Will be null if the import statement was a glob and no files matched, or the condition (if any) evaluated to false. Gets or sets if this import was ignored. Ignoring imports is controlled by ProjectLoadSettings. This is only set when an import would have been included but was ignored to due being invalid. This does not include when a globbed import returned no matches, or a conditioned import that evaluated to false. Arguments for project started events Indicates an invalid project identifier. Default constructor This constructor allows event data to be initialized. Sender is assumed to be "MSBuild". text message help keyword project name targets we are going to build (empty indicates default targets) list of properties list of items This constructor allows event data to be initialized. Sender is assumed to be "MSBuild". project id text message help keyword project name targets we are going to build (empty indicates default targets) list of properties list of items event context info for the parent project This constructor allows event data to be initialized. Sender is assumed to be "MSBuild". project id text message help keyword project name targets we are going to build (empty indicates default targets) list of properties list of items event context info for the parent project An containing global properties. The tools version. This constructor allows event data to be initialized. Also the timestamp can be set Sender is assumed to be "MSBuild". text message help keyword project name targets we are going to build (empty indicates default targets) list of properties list of items The of the event. This constructor allows event data to be initialized. Sender is assumed to be "MSBuild". project id text message help keyword project name targets we are going to build (empty indicates default targets) list of properties list of items event context info for the parent project The of the event. Gets the identifier of the project. Event context information, where the event was fired from in terms of the build location The name of the project file Project name Targets that we will build in the project Targets that we will build in the project Gets the set of global properties used to evaluate this project. Gets the set of global properties used to evaluate this project. Gets the tools version used to evaluate this project. List of properties in this project. This is a live, read-only list. List of items in this project. This is a live, read-only list. Serializes to a stream through a binary writer Binary writer which is attached to the stream the event will be serialized into Deserializes from a stream through a binary reader Binary reader which is attached to the stream the event will be deserialized from The version of the runtime the message packet was created from The argument for a property initial value set event. Creates an instance of the class. Creates an instance of the class. The name of the property. The value of the property. The source of the property. The message of the property. The help keyword. The sender name of the event. The importance of the message. The name of the property. The value of the property. The source of the property. The argument for a property reassignment event. Creates an instance of the PropertyReassignmentEventArgs class. Creates an instance of the PropertyReassignmentEventArgs class. The name of the property whose value was reassigned. The previous value of the reassigned property. The new value of the reassigned property. The location of the reassignment. The message of the reassignment event. The help keyword of the reassignment. The sender name of the reassignment event. The importance of the message. The name of the property whose value was reassigned. The previous value of the reassigned property. The new value of the reassigned property. The location of the reassignment. This class defines the attribute that a task writer can apply to a task's property to declare the property to be a required property. Default constructor. When marked with the RequiredRuntimeAttribute, a task indicates that it has stricter runtime requirements than a regular task - this tells MSBuild that it will need to potentially launch a separate process for that task if the current runtime does not match the version requirement. This attribute is currently non-functional since there is only one version of the CLR that is capable of running MSBuild v2.0 or v3.5 - the runtime v2.0 Constructor taking a version, such as "v2.0". Returns the runtime version the attribute was constructed with, e.g., "v2.0" This attribute is used to mark a task class as explicitly not being required to run in the STA for COM. Default constructor. This attribute is used to mark a task class as being required to run in a Single Threaded Apartment for COM. Default constructor. An abstract interface class to providing real-time logging and status while resolving an SDK. Log a build message to MSBuild. Message string. Optional message importances. Default to low. Represents a software development kit (SDK) that is referenced in a <Project /> or <Import /> element. Initializes a new instance of the SdkReference class. The name of the SDK. The version of the SDK. Minimum SDK version required by the project. Gets the name of the SDK. Gets the version of the SDK. Gets the minimum version required. This value is specified by the project to indicate the minimum version of the SDK that is required in order to build. This is useful in order to produce an error message if a name match can be found but no acceptable version could be resolved. Attempts to parse the specified string as a . The expected format is: SDK, SDK/Version, or SDK/min=MinimumVersion Values are not required to specify a version or MinimumVersion. An SDK name and version to parse in the format "SDK/Version,min=MinimumVersion". A parsed if the specified value is a valid SDK name. true if the SDK name was successfully parsed, otherwise false. An abstract interface for classes that can resolve a Software Development Kit (SDK). Name of the SDK resolver to be displayed in build output log. Gets the self-described resolution priority order. MSBuild will sort resolvers by this value. Resolves the specified SDK reference. A containing the referenced SDKs be resolved. Context for resolving the SDK. Factory class to create an An containing the resolved SDKs or associated error / reason the SDK could not be resolved. Return null if the resolver is not applicable for a particular . Note: You must use the to return a result. Context used by an to resolve an SDK. Gets a value indicating if the resolver is allowed to be interactive. Gets a value indicating if the resolver is running in Visual Studio. Logger to log real-time messages back to MSBuild. Path to the project file being built. Path to the solution file being built, if known. May be null. Version of MSBuild currently running. File version based on commit height from our public git repository. This is informational and not equal to the assembly version. Gets or sets any custom state for current build. This allows resolvers to maintain state between resolutions. This property is not thread-safe. An abstract interface class to indicate SDK resolver success or failure. Note: Use to create instances of this class. Do not inherit from this class. Indicates the resolution was successful. Resolved path to the SDK. Null if == false Resolved version of the SDK. Can be null or empty if the resolver did not provide a version (e.g. a path based resolver) Null if == false Additional resolved SDK paths beyond the one specified in This allows an SDK resolver to return multiple SDK paths, which will all be imported. Properties that should be added to the evaluation. This allows an SDK resolver to provide information to the build Items that should be added to the evaluation. This allows an SDK resolver to provide information to the build The Sdk reference An abstract interface class provided to to create an object indicating success / failure. Create an object indicating success resolving the SDK. Path to the SDK. Version of the SDK that was resolved. Optional warnings to display during resolution. Create an object indicating success resolving the SDK. Path to the SDK. Version of the SDK that was resolved. Properties to set in the evaluation Items to add to the evaluation Optional warnings to display during resolution. Create an object indicating success. This overload allows any number (zero, one, or many) of SDK paths to be returned. This means a "successful" result may not resolve to any SDKs. The resolver can also supply properties or items to communicate information to the build. This can allow resolvers to report SDKs that could not be resolved without hard-failing the evaluation, which can allow other components to take more appropriate action (for example installing optional workloads or downloading NuGet SDKs). SDK paths which should be imported SDK version which should be imported Properties to set in the evaluation Items to add to the evaluation Optional warnings to display during resolution. Create an object indicating failure resolving the SDK. Errors / reasons the SDK could not be resolved. Will be logged as a build error if no other SdkResolvers were able to indicate success. The value of an item and any associated metadata to be added by an SDK resolver. See Creates an The value (itemspec) for the item A dictionary of item metadata. This should be created with for the comparer. The reason that a target was built by its parent target. This wasn't built on because of a parent. The target was part of the parent's BeforeTargets list. The target was part of the parent's DependsOn list. The target was part of the parent's AfterTargets list. Arguments for target finished events Default constructor This constructor allows event data to be initialized. Sender is assumed to be "MSBuild". text message help keyword target name project file file in which the target is defined true if target built successfully This constructor allows event data to be initialized. Sender is assumed to be "MSBuild". text message help keyword target name project file file in which the target is defined true if target built successfully Target output items for the target. If batching will be null for everything except for the last target in the batch This constructor allows event data to be initialized including the timestamp when the event was created. Sender is assumed to be "MSBuild". text message help keyword target name project file file in which the target is defined true if target built successfully Timestamp when the event was created An containing the outputs of the target. Serializes to a stream through a binary writer Binary writer which is attached to the stream the event will be serialized into Deserializes from a stream through a binary reader Binary reader which is attached to the stream the event will be deserialized from The version of the runtime the message packet was created from Target name True if target built successfully, false otherwise Project file associated with event. File where this target was declared. Target outputs Arguments for the target skipped event. Initializes a new instance of the TargetSkippedEventArgs class. Initializes a new instance of the TargetSkippedEventArgs class. Gets or sets the name of the target being skipped. Gets or sets the parent target of the target being skipped. File where this target was declared. Why the parent target built this target. Arguments for target started events Default constructor This constructor allows event data to be initialized. Sender is assumed to be "MSBuild". text message help keyword target name project file file in which the target is defined This constructor allows event data to be initialized including the timestamp when the event was created. text message help keyword target name project file file in which the target is defined The part of the target. Timestamp when the event was created This constructor allows event data to be initialized. text message help keyword target name project file file in which the target is defined The part of the target. The reason the parent built this target. Timestamp when the event was created Serializes to a stream through a binary writer Binary writer which is attached to the stream the event will be serialized into Deserializes from a stream through a binary reader Binary reader which is attached to the stream the event will be deserialized from The version of the runtime the message packet was created from target name Target which caused this target to build Project file associated with event. File where this target was declared. Why this target was built by its parent. This class is used by tasks to log their command lines. This class extends so that command lines can be logged as messages. Logging a command line is only relevant for tasks that wrap an underlying executable/tool, or emulate a shell command. Tasks that have no command line equivalent should not raise this extended message event. WARNING: marking a type [Serializable] without implementing ISerializable imposes a serialization contract -- it is a promise to never change the type's fields i.e. the type is immutable; adding new fields in the next version of the type without following certain special FX guidelines, can break both forward and backward compatibility Default (family) constructor. Creates an instance of this class for the given task command line. The command line used by a task to launch its underlying tool/executable. The name of the task raising this event. Importance of command line -- controls whether the command line will be displayed by less verbose loggers. Creates an instance of this class for the given task command line. This constructor allows the timestamp to be set The command line used by a task to launch its underlying tool/executable. The name of the task raising this event. Importance of command line -- controls whether the command line will be displayed by less verbose loggers. Timestamp when the event was created Gets the task command line associated with this event. Gets the name of the task that raised this event. Arguments for task finished events Default constructor This constructor allows event data to be initialized. Sender is assumed to be "MSBuild". text message help keyword project file file in which the task is defined task name true indicates task succeed This constructor allows event data to be initialized and the timestamp to be set Sender is assumed to be "MSBuild". text message help keyword project file file in which the task is defined task name true indicates task succeed Timestamp when event was created Serializes to a stream through a binary writer Binary writer which is attached to the stream the event will be serialized into Deserializes the Errorevent from a stream through a binary reader Binary reader which is attached to the stream the event will be deserialized from The version of the runtime the message packet was created from Task Name True if target built successfully, false otherwise Project file associated with event. MSBuild file where this task was defined. Lightweight specialized implementation of only used for deserializing items. The goal is to minimize overhead when representing deserialized items. Used by node packet translator and binary logger. Clone the task item and all metadata to create a snapshot An to clone This class is used by tasks to log their parameters (input, output). The intrinsic ItemGroupIntrinsicTask to add or remove items also uses this class. Creates an instance of this class for the given task parameter. The type is declared in Microsoft.Build.Framework.dll which is a declarations assembly. The logic to realize the Message is in Microsoft.Build.dll which is an implementations assembly. This seems like the easiest way to inject the implementation for realizing the Message. Note that the current implementation never runs and is provided merely as a safeguard in case MessageGetter isn't set for some reason. Provides a way for Microsoft.Build.dll to provide a more efficient dictionary factory (using ArrayDictionary`2). Since that is an implementation detail, it is not included in Microsoft.Build.Framework.dll so we need this extensibility point here. Class which represents the parameter information from the using task as a strongly typed class. Encapsulates a list of parameters declared in the UsingTask Name of the parameter The actual type of the parameter True if the parameter is both an output and input parameter. False if the parameter is only an input parameter True if the parameter must be supplied to each invocation of the task. The type of the property Name of the property This task parameter is an output parameter (analogous to [Output] attribute) This task parameter is required (analogous to the [Required] attribute) This task parameter should be logged when LogTaskInputs is set. Defaults to true. When this task parameter is an item list, determines whether to log item metadata. Defaults to true. Whether the Log and LogItemMetadata properties have been assigned already. Arguments for task started events Default constructor This constructor allows event data to be initialized. Sender is assumed to be "MSBuild". text message help keyword project file file in which the task is defined task name This constructor allows event data to be initialized. Sender is assumed to be "MSBuild". text message help keyword project file file in which the task is defined task name Timestamp when event was created Serializes to a stream through a binary writer Binary writer which is attached to the stream the event will be serialized into Deserializes the Errorevent from a stream through a binary reader Binary reader which is attached to the stream the event will be deserialized from The version of the runtime the message packet was created from Task name. Project file associated with event. MSBuild file where this task was defined. Arguments for telemetry events. Gets or sets the name of the event. Gets or sets a list of properties associated with the event. The arguments for an uninitialized property read event. UninitializedPropertyReadEventArgs Creates an instance of the UninitializedPropertyReadEventArgs class The name of the uninitialized property that was read. The message of the uninitialized property that was read. The helpKeyword of the uninitialized property that was read. The sender name of the event. The message importance of the event. The name of the uninitialized property that was read. Represents an argument to a . Functionally, it is simply a reference to another . Those who manually instantiate this class should remember to call before setting the first property and after setting the last property of the object. Default constructor needed for XAML deserialization. Name of the this argument refers to. Its value must point to a valid . This field is mandatory and culture invariant. Tells if the pointed to by must be defined for the definition of the owning this argument to make sense. This field is optional and is set to false by default. The string used to separate this argument value from the parent switch in the command line. This field is optional and culture invariant. See ISupportInitialize. See ISupportInitialize. Represents a property. This represents schema information (name, allowed values, etc) of a property. Since this is just schema information, there is no field like "Value" used to get/set the value of this property. Those who manually instantiate this class should remember to call before setting the first property and after setting the last property of the object. This partial class contains all properties which are public and hence settable in XAML. Those properties that are internal are defined in another partial class below. Represents a property. This represents schema information (name, allowed values, etc) of a property. Since this is just schema information, there is no field like "Value" used to get/set the value of this property. Those who manually instantiate this class should remember to call before setting the first property and after setting the last property of the object. This partial class contains members that are auto-generated, internal, etc. Whereas the other partial class contains public properties that can be set in XAML. See DisplayName property. Default constructor. Needed for deserializtion from a persisted format. The name of this . This field is mandatory and culture invariant. The value of this field cannot be set to the empty string. The name that could be used by a prospective UI client to display this . This field is optional and is culture sensitive. When this property is not set, it is assigned the same value as the property (and hence, would not be localized). Description of this for use by a prospective UI client. This field is optional and is culture sensitive. The keyword that is used to open the help page for this property. This form of specifying help takes precedence over and + . This field is optional and is culture insensitive. The URL of the help page for this property that will be opened when the user hits F1. This property is higher in priority that + (i.e., these two properties are ignored if is specified), but lower in priority than . This field is optional and is culture insensitive. ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_vstoc/html/06ddebea-2c83-4a45-bb48-6264c797ed93.htm The help file to use when the user hits F1. Must specify along with this. This property goes along with . . This form of specifying the help page for a property takes lower precedence than both and . This field is optional and is culture insensitive. The help context to use when the user hits F1. Must specify along with this. This property uses the property to display the help context of the specified help file. This field is optional. This form of specifying the help page for a property takes lower precedence than both and . The name of the category to which this property belongs to. If the value of this field does not correspond to the Name property of a element defined in the containing , a default with this name is auto-generated and added to the containing class. This field is optional and is culture invariant. When this field is not specified, this property is added to a auto-generated category called General (localized). This field cannot be set to the empty string. The sub category to which this property belongs to. Tells if this property is a read-only property. This field is optional and its default value is "false". A value indicating whether this property allows multiple values to be supplied/selected simultaneously. The switch representation of this property for the case when this property represents a tool parameter. This field is optional and culture invariant. For the VC++ CL task, WholeProgramOptimization is a boolean parameter. It's switch is GL. The prefix for the switch representation of this property for the case when this property represents a tool parameter. The value specified here overrides the value specified for the parent 's . This field is optional and culture invariant. For the VC++ CL task, WholeProgramOptimization is a boolean parameter. It's switch is GL and its switch prefix (inherited from the parent since it is not overridden by WholeProgramOptimization) is /. Thus the complete switch in the command line for this property would be /GL The token used to separate a switch from its value. The value specified here overrides the value specified for the parent 's . This field is optional and culture invariant. Example: Consider /D:WIN32. In this switch and value representation, ":" is the separator since its separates the switch D from its value WIN32. A hint to the UI client telling it whether to display this property or not. This field is optional and has the default value of "true". A hint to the command line constructor whether to include this property in the command line or not. Some properties are used only by the targets and don't want to be included in the command line. Others (like task parameters) are included in the command line in the form of the switch/value they emit. This field is optional and has the default value of true. Indicates whether this property is required to have a value set. Specifies the default value for this property. This field is optional and whether, for a , it is culture sensitive or not depends on the semantics of it. The data source where the current value of this property is stored. If defined, it overrides the property on the containing . This field is mandatory only if the parent does not have the data source initialized. The getter for this property returns only the set directly on this instance. Additional attributes of this . This can be used as a grab bag of additional metadata of this property that are not captured by the primary fields. You will need a custom UI to interpret the additional metadata since the shipped UI formats can't obviously know about it. This field is optional. List of arguments for this property. This field is optional. List of value editors for this property. This field is optional. The containing this . See ISupportInitialize. See ISupportInitialize. Represents the schame of a boolean property. Represents the logical negation of a boolean switch. For the VC++ CL task, WholeProgramOptimization is a boolean parameter. It's switch is GL. To disable whole program optimization, you need to pass the ReverseSwitch, which is GL-. This field is optional. Represents a category to which a can belong to. Those who manually instantiate this class should remember to call before setting the first property and after setting the last property of the object. This partial class contains all properties which are public and hence settable in XAML. Those properties that are internal are defined in another partial class below. Represents a category to which a can belong to. Those who manually instantiate this class should remember to call before setting the first property and after setting the last property of the object. This partial class contains members that are auto-generated, internal, etc. Whereas the other partial class contains public properties that can be set in XAML. See DisplayName property. The name of this . This field is mandatory and culture invariant. This field cannot be set to the empty string. The name that could be used by a prospective UI client to display this . This field is optional and is culture sensitive. When this property is not set, it is assigned the same value as the property (and hence, would not be localized). Description of this . This field is optional and is culture sensitive. Subtype of this . Is either Grid (default) or CommandLine. It helps the UI display this category in an appropriate form. E.g. non command line category properties are normally displayed in the form of a property grid. Help information for this . Maybe used to specify a help URL. This field is optional and is culture sensitive. Default constructor. Called during deserialization. See ISupportInitialize. See ISupportInitialize. The CategorySchema provides a strongly typed identity handle to the underlying schema data model. Used to deserialize the content type information metadata hash Constructor serializes IContentType.Name serializes IContentType.DisplayName serializes IContentType.ItemType serializes IContentType.DefaultContentTypeForItemType This property was never used for anything. It should have been removed before we shipped MSBuild 4.0. serializes content type's metadata. Accessible via IContentType.GetMetadata() Access metadata in convenient way See ISupportInitialize. See ISupportInitialize. see IProjectSchemaNode see IProjectSchemaNode Lazily initializes the metadata dictionary. The new dictionary. This is a destructive operation. It clears the NameValuePair list field. Indicates where the default value for some property may be found. The default value for a property is set at the top of the project file (usually via an import of a .props file). The default value for a property is set at the bottom of the project file (usually via an import of a .targets file, where the property definition is conditional on whether the property has not already been defined.) Represents the location and grouping for a . Those who manually instantiate this class should remember to call before setting the first property and after setting the last property of the object. Default constructor. Needed for proper XAML deserialization. The storage location for this data source. This field is mandatory unless is set. In that case, the parent will be used with the specified style. Example values are ProjectFile and UserFile. ProjectFile causes the property value to be written to and read from the project manifest file or the property sheet (depending on which node in the solution explorer/property manager window is used to spawn the property pages UI). UserFile causes the property value to be written to and read from the .user file. The storage style for this data source. For example, with of ProjectFile, this field can be Element (default) to save as a child XML Element, or Attribute to save properties as an XML attribute. Gets or sets the actual MSBuild property name used to read/write the value of this property. Applicable only to objects attached to properties. The MSBuild property name to use; or null to use the as the MSBuild property name. The persisted name will usually be the same as the property name as it appears in the and the value of this property can therefore be left at is default of null. Since property names must be unique but need not be unique in the persisted store (due to other differences in the data source such as item type) there may be times when Rule property names must be changed to be unique in the XAML file, but without changing how the property is persisted in the MSBuild file. It is in those cases where this property becomes useful. It may also be useful in specialized build environments where property names must differ from the normally used name in order to maintain compatibility with the project system. The label of the MSBuild property group/item definition group to which a property/item definition metadata belongs to. Default value is the empty string. A VC++ property that exists in the project manifest in the MSBuild property group with label Globals would have this same value for this field. If a is an item definition metadata or item metadata, this field specified the item type of the item definition or the item, respectively. For common properties this field must not be set. Indicates if a property is configuration-dependent as indicated by the presence of a configuration condition attached to the property definition at its persistence location. This field is optional and has the default value of true. The data type of the source. Generally one of Item, ItemDefinition, Property, or TargetResults (when is non-empty). Among other things this governs how the data is treated during build. A value of Item for this property indicates that this property is actually an item array - the list of all items with the item type specified by . Gets or sets the semicolon-delimited list of MSBuild targets that must be executed before reading the read-only properties or items described by this . Gets or sets a value indicating where the default value for this property can be found. See ISupportInitialize. See ISupportInitialize. Represents the schema of an enumeration property. This class inherits the property from the class. That property does not make sense for this property. Use the property on the instead to mark the default value for this property. constructor The provider that produces the list of possible values for this property. Must be set. A provider-specific set of options to pass to the provider. Represents the schema of an enumeration property. This class inherits the property from the class. That property does not make sense for this property. Use the property on the instead to mark the default value for this property. constructor The list of possible values for this property. Must have at least one value. See ISupportInitialize. Represents an admissible value of an . See DisplayName property. Default constructor needed for XAML deserialization. The name of this . This field is mandatory and culture invariant. The name that could be used by a prospective UI client to display this . This field is optional and is culture sensitive. When this property is not set, it is assigned the same value as the property (and hence, would not be localized). Description of this for use by a prospective UI client. This field is optional and is culture sensitive. Help information for this . Maybe used to specify a help URL. This field is optional and is culture sensitive. The switch representation of this property for the case when the parent represents a tool parameter. This field is optional and culture invariant. The VC compiler has an named Optimizationused to specify the desired optimization type. All the admissible values for this property have switches, e.g. Disabled (switch = Od), "MinimumSize" (switch = O1), etc. The prefix for the switch representation of this value for the case when the parent represents a tool parameter. This field is optional and culture invariant. Tells if this is the default value for the associated . This field is optional and the default value for this field is "false". Additional attributes of this . This can be used as a grab bag of additional metadata of this value that are not captured by the primary fields. You will need a custom UI to interpret the additional metadata since the shipped UI formats can't obviously know about it. This field is optional. List of arguments for this . This field is optional. simple class that deserialize extension to content type data Constructor file extension corresponding content type see IProjectSchemaNode see IProjectSchemaNode Represent the schema of an integer property. Minimum allowed value for this property. This field is optional. It returns null when this property is not set. The value of this property must be less than or equal to the property (assuming that the latter is defined). Maximum allowed value for this property. This field is optional. It returns null when this property is not set. The value of this property must be greater than or equal to the property (assuming that the latter is defined). See ISupportInitialize. Interface that we expect all root classes from project schema XAML files to implement Return all types of static data for data driven features this node contains Returns all instances of static data with Type "type". Null or Empty list if there is no objects from asked type provided by this node Used to deserialize the item type information Constructor serializes IItemType.Name serializes IItemType.DisplayName serializes IItemType.ItemType serializes IItemType.UpToDateCheckInput See ISupportInitialize. See ISupportInitialize. see IProjectSchemaNode see IProjectSchemaNode Represents a name-value pair. The name cannot be null or empty. Default constructor needed for The name. The value. Serialization class for node for the Data driven project schema XAML Constructor Collection of any schema node see IProjectSchemaNode see IProjectSchemaNode Methods for overriding one rule with another. A subsequent definition for a rule (with the same name) entirely overrides a previous definition. A subsequent definition for a rule (with the same name) adds properties to a previous definition. Used to represent the schema information for a Tool, a Custom Build Rule, a PropertyPage, etc. Normally represented on disk as XAML, only one instance of this class is maintained per XAML file per project engine (solution). Those who manually instantiate this class should remember to call before setting the first property and after setting the last property of the object. This partial class contains all properties which are public and hence settable in XAML. Those properties that are internal are defined in another partial class below. Used to represent the schema information for a Tool, a Custom Build Rule, a PropertyPage, etc. Normally represented on disk as XAML, only one instance of this class is maintained per XAML file per project engine (solution). Those who manually instantiate this class should remember to call before setting the first property and after setting the last property of the object. This partial class contains members that are auto-generated, internal, etc. Whereas the other partial class contains public properties that can be set in XAML. See DisplayName property. Default constructor. Needed for deserialization from a persisted format. The name of this . This field is mandatory and culture invariant. The value of this field cannot be set to the empty string. The name that could be used by a prospective UI client to display this . This field is optional and is culture sensitive. When this property is not set, it is assigned the same value as the property (and hence, would not be localized). The name of the tool executable when this rule represents a tool. Description of this for use by a prospective UI client. This field is optional and is culture sensitive. Help information for this . Maybe used to specify a help URL. This field is optional and is culture sensitive. The prefix to use for all property switches in this for the case when this property represent a tool. The value specified can be overridden by the value specified by a child 's . This field is optional and culture invariant. For the VC++ CL task, WholeProgramOptimization is a boolean parameter. It's switch is GL and its switch prefix (inherited from the parent since it is not overridden by WholeProgramOptimization) is /. Thus the complete switch in the command line for this property would be /GL The token used to separate a property switch from its value. The value specified here is overridden by the value specified by the child 's . This field is optional and culture invariant. Example: Consider /D:WIN32. In this switch and value representation, ":" is the separator since its separates the switch D from its value WIN32. The UI renderer template used to display this Rule. The value used to set this field can be anything as long as it is recognized by the intended renderer. This field is required only if this Rule is meant to be displayed as a property page. The for all the properties in this . This is overriden by any data source defined locally for a property. This field need not be specified only if all individual properties have data source defined locally. This is a suggestion to a prospective UI client on the relative location of this compared to all other Rules in the system. This is used to specify whether multiple files need to be batched on one command line invocation. This field is optional. Indicates whether to hide the command line category or not. Default value is true. This field is optional. When this represents a Build Customization, this field represents the file extension to associate. This field is optional. When this represents a Build Customization, this field represents the message to be displayed before executing a Build Customization during the build. This field is optional. When this represents a Build Customization, this field represents the command line template that is going to be used by a Build Customization task to invoke the tool. This field is optional. When this represents a Build Customization, this field defines the semicolon separated list of additional inputs that are going to be evaluated for the Build Customization target. This field is optional. When this represents a Build Customization, this field defines the semicolon separated list of outputs that are going to be evaluated for the Build Customization target. This field is optional. Gets or sets the method to use when multiple rules with the same name appear in the project to reconcile the rules into one instance. This list of properties in this . Atleast one property should be specified. The list returned by this property should not be modified. The list of s that properties in this belong to. This field is optional. Note that this field returns only the categories that were explicitly defined and do not contain any auto-generated categories. When a contained in this declares its category to be something that is not present in this list, then we auto-generate a with that name and add it to the internal list of categories. That auto-generated category will not be returned by this field. Gets or sets arbitrary metadata that may be set on a rule. Gets or sets a value indicating if property pages for this rule should be hidden or not. Thread synchronization. See the property. Ordered dictionary of category names and the properties contained in them. The order of the categories is exactly the same as that specified in the XAML file. A lookup cache of property names to properties. This property returns the union of XAML specified s and auto-generated s. The latter are created from the missing categories that are being referred to by the properties in this Rule. The auto-generated s only have their name set. Returns all properties partitioned into categories. The return value is never null. The returned list may contain auto-generated categories. Note that if a (or its derived classes) refer to a property that is not specified, then an new Category is generated for the same. If not category is specified for the property, then the property is placed in the "General" category. The list of categories is exactly as specified in the Xaml file. The auto-generated categories come (in no strict order) after the specified categories. A dictionary whose keys are the names and the value is the list of properties in that category. Returns the list of properties in a . Returns null if this doesn't contain this category. Returns a property with a given name. The property, or null if one with a matching name could not be found. See ISupportInitialize. See ISupportInitialize. see IProjectSchemaNode see IProjectSchemaNode Initializes this class after Xaml loading is done. Creates a map containing all the evaluated category names and the list of properties belonging to that category. This is a simple container for instances. Note that we only deal in terms of s as far as property pages are concerned. The is only used as a container for more than one . The containing s are immediately stripped off after loading of the xaml file. Default constructor needed for XAML deserialization. The collection of instances this instance contains. Must have at least one . See ISupportInitialize Members. See ISupportInitialize Members. see IProjectSchemaNode see IProjectSchemaNode The RuleSchema provides a strongly typed identity handle to the underlying schema data model. Represents the schema of a list-of-strings property. Note, this represents a list of strings, not a list of s. Default constructor. Needed for property XAML deserialization. The separator to use in delineating individual values of this string list property For Val1;Val2;Val3, if CommandLineValueSeparator is specified as, say ,, the command line looks like this: /p:val1,val2,val3 If not specified, the command line looks like this: /p:val1 /p:val2 /p:val3 This field is optional. Please don't use. This is planned to be deprecated. Qualifies this string property to give it a more specific classification. Similar to the property. Represents the schema of a string property. Qualifies this string property to give it a more specific classification. The value this field is set to, must be understood by the consumer of this field (normally a UI renderer). The value of this property can be set to, say, "File", "Folder", "CarModel" etc. to specify if this is a file path, folder path, car model name etc. Represents a value editor See DisplayName property. Default constructor needed for XAML deserialization. The name of this . This field is mandatory and culture invariant. The UI display name for the editor Additional attributes of the editor that are not generic enough to be made properties on this class. This field is optional. See ISupportInitialize. See ISupportInitialize. Coupled together with the MSBUILDDISABLEFEATURESFROMVERSION environment variable, this class acts as a way to make risky changes while giving customers an opt-out. See docs here: https://github.com/dotnet/msbuild/blob/master/documentation/wiki/ChangeWaves.md For dev docs: https://github.com/dotnet/msbuild/blob/master/documentation/wiki/ChangeWaves-Dev.md Special value indicating that all features behind all Change Waves should be enabled. The lowest wave in the current rotation of Change Waves. The highest wave in the current rotation of Change Waves. Checks the conditions for whether or not we want ApplyChangeWave to be called again. The current disabled wave. The status of how the disabled wave was set. Read from environment variable `MSBuildDisableFeaturesFromVersion`, correct it if required, cache it and its ConversionState. Determines whether features behind the given wave are enabled. The version to compare. A bool indicating whether the change wave is enabled. Resets the state and value of the currently disabled version. Used for testing only. Constants that we want to be shareable across all our assemblies. The name of the property that indicates the tools path Name of the property that indicates the X64 tools path Name of the property that indicates the root of the SDKs folder Name of the property that indicates that all warnings should be treated as errors. Name of the property that indicates a list of warnings to treat as errors. Name of the property that indicates the list of warnings to treat as messages. The name of the environment variable that users can specify to override where NuGet assemblies are loaded from in the NuGetSdkResolver. The name of the target to run when a user specifies the /restore command-line argument. The most current Visual Studio Version known to this version of MSBuild. The most current ToolsVersion known to this version of MSBuild. The most current VSGeneralAssemblyVersion known to this version of MSBuild. Current version of this MSBuild Engine assembly in the form, e.g, "12.0" Symbol used in ProjectReferenceTarget items to represent default targets Symbol used in ProjectReferenceTarget items to represent targets specified on the ProjectReference item with fallback to default targets if the ProjectReference item has no targets specified. Specifies whether the current evaluation / build is happening during a graph build References to other msbuild projects Statically specifies what targets a project calls on its references Declares a project cache plugin and its configuration. Embed specified files in the binary log Constants naming well-known item metadata. The output path for a given item. This captures information of how various key methods of building with MSBuild ran. define the singleton instance of the event source Call this method to notify listeners of information relevant to collecting a set of items, mutating them in a specified way, and saving the results. The type of the item being mutated. The type of the item being mutated. Call this method to notify listeners of information relevant to the setup for a BuildManager to receive build requests. Call this method to notify listeners of information of how a project file built. Filename of the project being built. Filename of the project being built. Names of the targets that built. The condition being evaluated. The condition being evaluated. The result of evaluating the condition. Call this method to notify listeners of how the project data was evaluated. Relevant information about where in the run of the progam it is. Relevant information about where in the run of the progam it is. Relevant information about where in the run of the progam it is. Relevant information about where in the run of the progam it is. Relevant information about where in the run of the progam it is. Number of Properties getting evaluated. Number of Imports getting evaluated. Relevant information about where in the run of the progam it is. Relevant information about where in the run of the progam it is. Number of ItemDefinitionGroupElements getting evaluated. Relevant information about where in the run of the progam it is. Relevant information about where in the run of the progam it is. Number of project items evaluated. Relevant information about where in the run of the progam it is. Relevant information about where in the run of the progam it is. Number of using tasks elements evaluated. Relevant information about where in the run of the progam it is. Relevant information about where in the run of the progam it is. Number of targets read. Relevant information about where in the run of the progam it is. Call this method to notify listeners of information relevant to identifying a list of files that correspond to an item with a wildcard. Source of files to glob. Pattern, possibly with wildcard(s) to be expanded. Patterns not to expand. Source of files to glob. Pattern, possibly with wildcard(s) to be expanded. Patterns not to expand. Call this method to notify listeners of timing related to loading an XmlDocumentWithLocation from a path. Path to the document to load. Path to the document to load. Call this method to notify listeners of profiling for the function that parses an XML document into a ProjectRootElement. Relevant information about where in the run of the progam it is. Relevant information about where in the run of the progam it is. Call this method to notify listeners of profiling for the method that removes blacklisted references from the reference table. It puts primary and dependency references in invalid file lists. Project file's location. Project file's location. The name of the target being executed. The name of the target being executed. Call this method to notify listeners of the start of a build as called from the command line. The command line used to run MSBuild. The command line used to run MSBuild.