Task Class

 

When overridden in a derived form, provides functionality for tasks.

Namespace:   Microsoft.Build.Utilities
Assembly:  Microsoft.Build.Utilities.v4.0 (in Microsoft.Build.Utilities.v4.0.dll)


public abstract class Task : ITask

NameDescription
System_CAPS_protmethodTask()

Initializes a new instance of the Task class.

System_CAPS_protmethodTask(ResourceManager)

Initializes a new instance of the Task class with the specified TaskResources.

System_CAPS_protmethodTask(ResourceManager, String)

Initializes a new instance of the Task class with the specified TaskResources and HelpKeywordPrefix.

NameDescription
System_CAPS_pubpropertyBuildEngine

Gets or sets the instance of the IBuildEngine object used by the task.

System_CAPS_pubpropertyBuildEngine2

Gets the instance of the IBuildEngine2 object used by the task.

System_CAPS_pubpropertyBuildEngine3

Gets the instance of the IBuildEngine3 object used by the task.

System_CAPS_pubpropertyBuildEngine4

Gets the instance of the IBuildEngine4 object used by the task.

System_CAPS_protpropertyHelpKeywordPrefix

Gets or sets the prefix used to compose Help keywords from resource names.

System_CAPS_pubpropertyHostObject

Gets or sets the host object associated with the task.

System_CAPS_pubpropertyLog

Gets an instance of a TaskLoggingHelper class containing task logging methods.

System_CAPS_protpropertyTaskResources

Gets or sets the culture-specific resources associated with the task.

NameDescription
System_CAPS_pubmethodEquals(Object)

Determines whether the specified object is equal to the current object.(Inherited from Object.)

System_CAPS_pubmethodExecute()

When overridden in a derived class, executes the task.

System_CAPS_protmethodFinalize()

Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.(Inherited from Object.)

System_CAPS_pubmethodGetHashCode()

Serves as the default hash function. (Inherited from Object.)

System_CAPS_pubmethodGetType()

Gets the Type of the current instance.(Inherited from Object.)

System_CAPS_protmethodMemberwiseClone()

Creates a shallow copy of the current Object.(Inherited from Object.)

System_CAPS_pubmethodToString()

Returns a string that represents the current object.(Inherited from Object.)

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.

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;
		}
	}
}

.NET Framework
Available since 2.0

Any public static ( Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Return to top
Show: