Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

BuildEventArgs classe

 

Date de publication : novembre 2016

Fournit des données pour l'événement AnyEventRaised.

MSBuild est désormais inclus dans Visual Studio au lieu de .NET Framework. Vous pouvez utiliser MSBuild 12.0 côte à côte avec les versions précédemment déployé avec le .NET Framework.For plus d’informations, consultez Nouveautés de MSBuild 12.0.

Espace de noms:   Microsoft.Build.Framework
Assembly:  Microsoft.Build.Framework (dans Microsoft.Build.Framework.dll)

System.Object
  System.EventArgs
    Microsoft.Build.Framework.BuildEventArgs
      Microsoft.Build.Framework.LazyFormattedBuildEventArgs

[SerializableAttribute]
public abstract class BuildEventArgs : EventArgs

NomDescription
System_CAPS_protmethodBuildEventArgs()

Initialise une nouvelle instance de la classe BuildEventArgs.

MSBuild est désormais inclus dans Visual Studio au lieu de .NET Framework. Vous pouvez utiliser MSBuild 12.0 côte à côte avec les versions précédemment déployé avec le .NET Framework.For plus d’informations, consultez Nouveautés de MSBuild 12.0.

System_CAPS_protmethodBuildEventArgs(String, String, String)

Initialise une nouvelle instance de la BuildEventArgs classe avec l’objet Message, HelpKeyword, et SenderName valeurs.

MSBuild est désormais inclus dans Visual Studio au lieu de .NET Framework. Vous pouvez utiliser MSBuild 12.0 côte à côte avec les versions précédemment déployé avec le .NET Framework.For plus d’informations, consultez Nouveautés de MSBuild 12.0.

System_CAPS_protmethodBuildEventArgs(String, String, String, DateTime)

Initialise une nouvelle instance de la classe BuildEventArgs.

MSBuild est désormais inclus dans Visual Studio au lieu de .NET Framework. Vous pouvez utiliser MSBuild 12.0 côte à côte avec les versions précédemment déployé avec le .NET Framework.For plus d’informations, consultez Nouveautés de MSBuild 12.0.

NomDescription
System_CAPS_pubpropertyBuildEventContext

Obtient ou définit les informations contextuelles d’emplacement. Est associé à l’enregistrement des événements pour définir où ils se trouvent en relation avec le processus, moteur, projet, cible ou une tâche en cours d’exécution.

MSBuild est désormais inclus dans Visual Studio au lieu de .NET Framework. Vous pouvez utiliser MSBuild 12.0 côte à côte avec les versions précédemment déployé avec le .NET Framework.For plus d’informations, consultez Nouveautés de MSBuild 12.0.

System_CAPS_pubpropertyHelpKeyword

Obtient le mot clé d’aide pour l’événement.

MSBuild est désormais inclus dans Visual Studio au lieu de .NET Framework. Vous pouvez utiliser MSBuild 12.0 côte à côte avec les versions précédemment déployé avec le .NET Framework.For plus d’informations, consultez Nouveautés de MSBuild 12.0.

System_CAPS_pubpropertyMessage

Obtient le message pour l'événement.

MSBuild est désormais inclus dans Visual Studio au lieu de .NET Framework. Vous pouvez utiliser MSBuild 12.0 côte à côte avec les versions précédemment déployé avec le .NET Framework.For plus d’informations, consultez Nouveautés de MSBuild 12.0.

System_CAPS_pubpropertySenderName

Obtient le nom de la Object qui déclenche l’événement.

MSBuild est désormais inclus dans Visual Studio au lieu de .NET Framework. Vous pouvez utiliser MSBuild 12.0 côte à côte avec les versions précédemment déployé avec le .NET Framework.For plus d’informations, consultez Nouveautés de MSBuild 12.0.

System_CAPS_pubpropertyThreadId

Obtient un identificateur entier pour le thread qui a déclenché l’événement.

MSBuild est désormais inclus dans Visual Studio au lieu de .NET Framework. Vous pouvez utiliser MSBuild 12.0 côte à côte avec les versions précédemment déployé avec le .NET Framework.For plus d’informations, consultez Nouveautés de MSBuild 12.0.

System_CAPS_pubpropertyTimestamp

Obtient l’heure à laquelle l’événement a été déclenché sous forme de DateTime.

MSBuild est désormais inclus dans Visual Studio au lieu de .NET Framework. Vous pouvez utiliser MSBuild 12.0 côte à côte avec les versions précédemment déployé avec le .NET Framework.For plus d’informations, consultez Nouveautés de MSBuild 12.0.

NomDescription
System_CAPS_pubmethodEquals(Object)

(Hérité de Object.)

System_CAPS_protmethodFinalize()

(Hérité de Object.)

System_CAPS_pubmethodGetHashCode()

(Hérité de Object.)

System_CAPS_pubmethodGetType()

(Hérité de Object.)

System_CAPS_protmethodMemberwiseClone()

(Hérité de Object.)

System_CAPS_pubmethodToString()

(Hérité de Object.)

La BuildEventArgs classe est une classe de base abstraite pour toutes les Microsoft.Build.Framework classes d’argument d’événement.

L’exemple suivant montre comment écrire un journal de base qui répond aux événements de build.

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

Tous les membres statiques publics ( Shared en Visual Basic) de ce type sont thread-safe. Les membres d’instance n’ont pas la garantie d’être thread-safe.

Retour au début
Afficher: