Task Class
When overridden in a derived form, provides functionality for tasks.
MSBuild is now included in Visual Studio instead of the .NET Framework. You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Inheritance Hierarchy
System.Object
Microsoft.Build.Utilities.Task
Microsoft.Build.Tasks.GenerateManifestBase
Microsoft.Build.Tasks.SignFile
Microsoft.Build.Tasks.TaskExtension
Microsoft.Build.Tasks.UpdateManifest
Microsoft.Build.Utilities.ToolTask
Namespace: Microsoft.Build.Utilities
Assembly: Microsoft.Build.Utilities.Core (in Microsoft.Build.Utilities.Core.dll)
Syntax
'Declaration
Public MustInherit Class Task _
Implements ITask
public abstract class Task : ITask
public ref class Task abstract : ITask
[<AbstractClass>]
type Task =
class
interface ITask
end
public abstract class Task implements ITask
The Task type exposes the following members.
Constructors
Name | Description | |
---|---|---|
Task() | Initializes a new instance of the Task class.MSBuild is now included in Visual Studio instead of the .NET Framework. You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0. | |
Task(ResourceManager) | Initializes a new instance of the Task class with the specified TaskResources.MSBuild is now included in Visual Studio instead of the .NET Framework. You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0. | |
Task(ResourceManager, String) | Initializes a new instance of the Task class with the specified TaskResources and HelpKeywordPrefix.MSBuild is now included in Visual Studio instead of the .NET Framework. You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0. |
Top
Properties
Name | Description | |
---|---|---|
BuildEngine | Gets or sets the instance of the IBuildEngine object used by the task.MSBuild is now included in Visual Studio instead of the .NET Framework. You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0. | |
BuildEngine2 | Gets the instance of the IBuildEngine2 object used by the task.MSBuild is now included in Visual Studio instead of the .NET Framework. You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0. | |
BuildEngine3 | Gets the instance of the IBuildEngine3 object used by the task.MSBuild is now included in Visual Studio instead of the .NET Framework. You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0. | |
BuildEngine4 | Gets the instance of the IBuildEngine4 object used by the task.MSBuild is now included in Visual Studio instead of the .NET Framework. You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0. | |
HelpKeywordPrefix | Gets or sets the prefix used to compose Help keywords from resource names.MSBuild is now included in Visual Studio instead of the .NET Framework. You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0. | |
HostObject | Gets or sets the host object associated with the task.MSBuild is now included in Visual Studio instead of the .NET Framework. You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0. | |
Log | Gets an instance of a TaskLoggingHelper class containing task logging methods.MSBuild is now included in Visual Studio instead of the .NET Framework. You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0. | |
TaskResources | Gets or sets the culture-specific resources associated with the task.MSBuild is now included in Visual Studio instead of the .NET Framework. You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0. |
Top
Methods
Name | Description | |
---|---|---|
Equals | (Inherited from Object.) | |
Execute | When overridden in a derived class, executes the task.MSBuild is now included in Visual Studio instead of the .NET Framework. You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0. | |
Finalize | (Inherited from Object.) | |
GetHashCode | (Inherited from Object.) | |
GetType | (Inherited from Object.) | |
MemberwiseClone | (Inherited from Object.) | |
ToString | (Inherited from Object.) |
Top
Remarks
This abstract class provides default implementations for the methods and properties of the ITask interface.
This class can only be instantiated in a derived form.
Examples
The following example shows the code for a task that creates one or more directories.
using System;
using System.IO;
using System.Security;
using System.Collections;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
namespace Microsoft.Build.Tasks
{
/*
* Class: MakeDir
* An MSBuild task that creates one or more directories.
*/
public class MakeDir : Task
{
// The Required attribute indicates the following to MSBuild:
// - if the parameter is a scalar type, and it is not supplied, fail the build immediately
// - if the parameter is an array type, and it is not supplied, pass in an empty array
// In this case the parameter is an array type, so if a project fails to pass in a value for the
// Directories parameter, the task will get invoked, but this implementation will do nothing,
// because the array will be empty.
[Required]
// Directories to create.
public ITaskItem[] Directories
{
get
{
return directories;
}
set
{
directories = value;
}
}
// The Output attribute indicates to MSBuild that the value of this property can be gathered after the
// task has returned from Execute(), if the project has an <Output> tag under this task's element for
// this property.
[Output]
// A project may need the subset of the inputs that were actually created, so make that available here.
public ITaskItem[] DirectoriesCreated
{
get
{
return directoriesCreated;
}
}
private ITaskItem[] directories;
private ITaskItem[] directoriesCreated;
/// <summary>
/// Execute is part of the Microsoft.Build.Framework.ITask interface.
/// When it's called, any input parameters have already been set on the task's properties.
/// It returns true or false to indicate success or failure.
/// </summary>
public override bool Execute()
{
ArrayList items = new ArrayList();
foreach (ITaskItem directory in Directories)
{
// ItemSpec holds the filename or path of an Item
if (directory.ItemSpec.Length > 0)
{
try
{
// Only log a message if we actually need to create the folder
if (!Directory.Exists(directory.ItemSpec))
{
Log.LogMessage(MessageImportance.Normal, "Creating directory " + directory.ItemSpec);
Directory.CreateDirectory(directory.ItemSpec);
}
// Add to the list of created directories
items.Add(directory);
}
// If a directory fails to get created, log an error, but proceed with the remaining
// directories.
catch (Exception ex)
{
if (ex is IOException
|| ex is UnauthorizedAccessException
|| ex is PathTooLongException
|| ex is DirectoryNotFoundException
|| ex is SecurityException)
{
Log.LogError("Error trying to create directory " + directory.ItemSpec + ". " + ex.Message);
}
else
{
throw;
}
}
}
}
// Populate the "DirectoriesCreated" output items.
directoriesCreated = (ITaskItem[])items.ToArray(typeof(ITaskItem));
// Log.HasLoggedErrors is true if the task logged any errors -- even if they were logged
// from a task's constructor or property setter. As long as this task is written to always log an error
// when it fails, we can reliably return HasLoggedErrors.
return !Log.HasLoggedErrors;
}
}
}
Thread Safety
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.