TaskStartedEventArgs Classe

Définition

Fournit des données pour l'événement TaskStarted.Provides data for the TaskStarted event.

public ref class TaskStartedEventArgs : Microsoft::Build::Framework::BuildStatusEventArgs
[System.Serializable]
public class TaskStartedEventArgs : Microsoft.Build.Framework.BuildStatusEventArgs
type TaskStartedEventArgs = class
    inherit BuildStatusEventArgs
Public Class TaskStartedEventArgs
Inherits BuildStatusEventArgs
Héritage
Attributs

Exemples

L’exemple suivant montre comment écrire un journal de base qui répond aux événements de Build.The following example shows how to write a basic logger that responds to build events.

using System;
using System.IO;
using System.Security;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;

namespace MyLoggers
{
    // This logger will derive from the Microsoft.Build.Utilities.Logger class,
    // which provides it with getters and setters for Verbosity and Parameters,
    // and a default empty Shutdown() implementation.
    public class BasicFileLogger : Logger
    {
        /// <summary>
        /// Initialize is guaranteed to be called by MSBuild at the start of the build
        /// before any events are raised.
        /// </summary>
        public override void Initialize(IEventSource eventSource)
        {
            // The name of the log file should be passed as the first item in the
            // "parameters" specification in the /logger switch.  It is required
            // to pass a log file to this logger. Other loggers may have zero or more than 
            // one parameters.
            if (null == Parameters)
            {
                throw new LoggerException("Log file was not set.");
            }
            string[] parameters = Parameters.Split(';');
            
            string logFile = parameters[0];
            if (String.IsNullOrEmpty(logFile))
            {
                throw new LoggerException("Log file was not set.");
            }
            
            if (parameters.Length > 1)
            {
                throw new LoggerException("Too many parameters passed.");
            }
            
            try
            {
                // Open the file
                this.streamWriter = new StreamWriter(logFile);
            }
            catch (Exception ex)
            {
                if
                (
                    ex is UnauthorizedAccessException
                    || ex is ArgumentNullException
                    || ex is PathTooLongException
                    || ex is DirectoryNotFoundException
                    || ex is NotSupportedException
                    || ex is ArgumentException
                    || ex is SecurityException
                    || ex is IOException
                )
                {
                    throw new LoggerException("Failed to create log file: " + ex.Message);
                }
                else
                {
                    // Unexpected failure
                    throw;
                }
            }

            // For brevity, we'll only register for certain event types. Loggers can also
            // register to handle TargetStarted/Finished and other events.
            eventSource.ProjectStarted += new ProjectStartedEventHandler(eventSource_ProjectStarted);
            eventSource.TaskStarted += new TaskStartedEventHandler(eventSource_TaskStarted);
            eventSource.MessageRaised += new BuildMessageEventHandler(eventSource_MessageRaised);
            eventSource.WarningRaised += new BuildWarningEventHandler(eventSource_WarningRaised);
            eventSource.ErrorRaised += new BuildErrorEventHandler(eventSource_ErrorRaised);
            eventSource.ProjectFinished += new ProjectFinishedEventHandler(eventSource_ProjectFinished);
        }

        void eventSource_ErrorRaised(object sender, BuildErrorEventArgs e)
        {
            // BuildErrorEventArgs adds LineNumber, ColumnNumber, File, amongst other parameters
            string line = String.Format(": ERROR {0}({1},{2}): ", e.File, e.LineNumber, e.ColumnNumber);
            WriteLineWithSenderAndMessage(line, e);
        }
        
        void eventSource_WarningRaised(object sender, BuildWarningEventArgs e)
        {
            // BuildWarningEventArgs adds LineNumber, ColumnNumber, File, amongst other parameters
            string line = String.Format(": Warning {0}({1},{2}): ", e.File, e.LineNumber, e.ColumnNumber);
            WriteLineWithSenderAndMessage(line, e);
        }

        void eventSource_MessageRaised(object sender, BuildMessageEventArgs e)
        {
            // BuildMessageEventArgs adds Importance to BuildEventArgs
            // Let's take account of the verbosity setting we've been passed in deciding whether to log the message
            if ((e.Importance == MessageImportance.High && IsVerbosityAtLeast(LoggerVerbosity.Minimal))
                || (e.Importance == MessageImportance.Normal && IsVerbosityAtLeast(LoggerVerbosity.Normal))
                || (e.Importance == MessageImportance.Low && IsVerbosityAtLeast(LoggerVerbosity.Detailed))				
                )
            {
                WriteLineWithSenderAndMessage(String.Empty, e);
            }
        }

        void eventSource_TaskStarted(object sender, TaskStartedEventArgs e)
        {
            // TaskStartedEventArgs adds ProjectFile, TaskFile, TaskName
            // To keep this log clean, this logger will ignore these events.
        }
        
        void eventSource_ProjectStarted(object sender, ProjectStartedEventArgs e)
        {
            // ProjectStartedEventArgs adds ProjectFile, TargetNames
            // Just the regular message string is good enough here, so just display that.
            WriteLine(String.Empty, e);
            indent++;
        }

        void eventSource_ProjectFinished(object sender, ProjectFinishedEventArgs e)
        {
            // The regular message string is good enough here too.
            indent--;
            WriteLine(String.Empty, e);
        }
        
        /// <summary>
        /// Write a line to the log, adding the SenderName and Message
        /// (these parameters are on all MSBuild event argument objects)
        /// </summary>
        private void WriteLineWithSenderAndMessage(string line, BuildEventArgs e)
        {
            if (0 == String.Compare(e.SenderName, "MSBuild", true /*ignore case*/))
            {
                // Well, if the sender name is MSBuild, let's leave it out for prettiness
                WriteLine(line, e);
            }
            else
            {
                WriteLine(e.SenderName + ": " + line, e);
            }
        }
        
        /// <summary>
        /// Just write a line to the log
        /// </summary>
        private void WriteLine(string line, BuildEventArgs e)
        {
            for (int i = indent; i > 0; i--)
            {
                streamWriter.Write("\t");
            }
            streamWriter.WriteLine(line + e.Message);
        }
        
        /// <summary>
        /// Shutdown() is guaranteed to be called by MSBuild at the end of the build, after all 
        /// events have been raised.
        /// </summary>
        public override void Shutdown()
        {
            // Done logging, let go of the file
            streamWriter.Close();
        }

        private StreamWriter streamWriter;
        private int indent;
    }
}

Constructeurs

TaskStartedEventArgs()

Initialise une nouvelle instance de la classe TaskStartedEventArgs.Initializes a new instance of the TaskStartedEventArgs class.

TaskStartedEventArgs(String, String, String, String, String)

Initialise une nouvelle instance de la classe TaskStartedEventArgs avec les valeurs spécifiées.Initializes a new instance of the TaskStartedEventArgs class with the specified values.

TaskStartedEventArgs(String, String, String, String, String, DateTime)

Initialise une nouvelle instance de la classe TaskStartedEventArgs.Initializes a new instance of the TaskStartedEventArgs class.

Propriétés

BuildEventContext

Obtient ou définit les informations contextuelles d'emplacement.Gets or sets location contextual information. Est associé à l'enregistrement des événements afin de définir où ils sont localisés par rapport au processus, au moteur, au projet, à la cible ou à la tâche en cours d'exécution.This is attached to logging events to define where they are located in relation to the process, engine, project, target, or task that is executing.

(Hérité de BuildEventArgs)
HelpKeyword

Obtient le mot clé d'aide pour l'événement.Gets the Help keyword for the event.

(Hérité de BuildEventArgs)
Message

Obtient le message pour l'événement.Gets the message for the event.

(Hérité de BuildEventArgs)
ProjectFile

Obtient le nom du fichier projet associé à l'événement.Gets the name of the project file associated with the event.

SenderName

Obtient le nom de l'objet Object déclenchant l'événement.Gets the name of the Object raising the event.

(Hérité de BuildEventArgs)
TaskFile

Obtient le fichier MSBuildMSBuild dans lequel la tâche a été définie.Gets the MSBuildMSBuild file where the task was defined.

TaskName

Obtient le nom de la tâche associée à l'événement.Gets the name of the task associated with the event.

ThreadId

Obtient un identificateur entier pour le thread qui a déclenché l'événement.Gets an integer identifier for the thread that raised the event.

(Hérité de BuildEventArgs)
Timestamp

Obtient l'heure à laquelle l'événement a été déclenché sous la forme DateTime.Gets the time the event was raised as a DateTime.

(Hérité de BuildEventArgs)

Méthodes

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.Determines whether the specified object is equal to the current object.

(Hérité de Object)
GetHashCode()

Sert de fonction de hachage par défaut.Serves as the default hash function.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.Gets the Type of the current instance.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel.Creates a shallow copy of the current Object.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l'objet en cours.Returns a string that represents the current object.

(Hérité de Object)

S’applique à