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.