BuildWarningEventArgs BuildWarningEventArgs BuildWarningEventArgs BuildWarningEventArgs Class

Определение

Предоставляет данные для события WarningRaised.Provides data for the WarningRaised event.

public ref class BuildWarningEventArgs : Microsoft::Build::Framework::LazyFormattedBuildEventArgs
[System.Serializable]
public class BuildWarningEventArgs : Microsoft.Build.Framework.LazyFormattedBuildEventArgs
type BuildWarningEventArgs = class
    inherit LazyFormattedBuildEventArgs
Public Class BuildWarningEventArgs
Inherits LazyFormattedBuildEventArgs
Наследование
BuildWarningEventArgsBuildWarningEventArgsBuildWarningEventArgsBuildWarningEventArgs
Атрибуты

Примеры

В следующем примере показано, как написать базовое средство ведения журнала, которое реагирует на события сборки.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;
	}
}

Комментарии

ВНИМАНИЕ! маркировка типа [Serializable] без реализации ISerializable накладывает контракт на сериализацию — это обещание никогда не изменять поля типа, т. е. тип является неизменяемым; Добавление новых полей в следующей версии типа без соблюдения определенных специальных руководств FX может привести к нарушению обратной совместимости.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

Конструкторы

BuildWarningEventArgs() BuildWarningEventArgs() BuildWarningEventArgs() BuildWarningEventArgs()

Инициализирует новый экземпляр класса BuildWarningEventArgs.Initializes a new instance of the BuildWarningEventArgs class.

BuildWarningEventArgs(String, String, DateTime, Object[], String, Int32, Int32, Int32, Int32, String, String, String) BuildWarningEventArgs(String, String, DateTime, Object[], String, Int32, Int32, Int32, Int32, String, String, String) BuildWarningEventArgs(String, String, DateTime, Object[], String, Int32, Int32, Int32, Int32, String, String, String) BuildWarningEventArgs(String, String, DateTime, Object[], String, Int32, Int32, Int32, Int32, String, String, String)

Данный конструктор позволяет установить отметку времениThis constructor allows timestamp to be set

BuildWarningEventArgs(String, String, DateTime, String, Int32, Int32, Int32, Int32, String, String, String) BuildWarningEventArgs(String, String, DateTime, String, Int32, Int32, Int32, Int32, String, String, String) BuildWarningEventArgs(String, String, DateTime, String, Int32, Int32, Int32, Int32, String, String, String) BuildWarningEventArgs(String, String, DateTime, String, Int32, Int32, Int32, Int32, String, String, String)

Данный конструктор позволяет установить отметку времениThis constructor allows timestamp to be set

BuildWarningEventArgs(String, String, String, Int32, Int32, Int32, Int32, String, String, String) BuildWarningEventArgs(String, String, String, Int32, Int32, Int32, Int32, String, String, String) BuildWarningEventArgs(String, String, String, Int32, Int32, Int32, Int32, String, String, String) BuildWarningEventArgs(String, String, String, Int32, Int32, Int32, Int32, String, String, String)

Инициализирует новый экземпляр класса BuildWarningEventArgs с помощью заданных значений Subcategory, Code, File, LineNumber, ColumnNumber, EndLineNumber, EndColumnNumber, Message, HelpKeyword и SenderName.Initializes a new instance of the BuildWarningEventArgs class with the specified Subcategory, Code, File, LineNumber, ColumnNumber, EndLineNumber, EndColumnNumber, Message, HelpKeyword, and SenderName values.

Свойства

BuildEventContext BuildEventContext BuildEventContext BuildEventContext

Получает или задает контекстные сведения о расположении.Gets or sets location contextual information. Они присоединяются к событиям ведения журнала для определения их расположения по отношению к процессу, обработчику, событию, целевому объекту или выполняемой задаче.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.

(Inherited from BuildEventArgs)
Code Code Code Code

Получает код предупреждения события.Gets the warning code of the event.

ColumnNumber ColumnNumber ColumnNumber ColumnNumber

Получает номер столбца, который соответствует началу раздела кода, вызвавшего событие.Gets the column number that corresponds to the beginning of the section of code that raised the event.

EndColumnNumber EndColumnNumber EndColumnNumber EndColumnNumber

Получает номер столбца, который соответствует концу раздела кода, вызвавшего событие.Gets the column number that corresponds to the end of the section of code that raised the event.

EndLineNumber EndLineNumber EndLineNumber EndLineNumber

Получает номер строки, который соответствует концу раздела кода, вызвавшего событие.Gets the line number that corresponds to the end of the section of code that raised the event.

File File File File

Получает имя файла, вызвавшего событие.Gets the name of the file that raised the event.

HelpKeyword HelpKeyword HelpKeyword HelpKeyword

Получает ключевое слово справки для события.Gets the Help keyword for the event.

(Inherited from BuildEventArgs)
LineNumber LineNumber LineNumber LineNumber

Получает номер строки, который соответствует началу раздела кода, вызвавшего событие.Gets the line number that corresponds to the beginning of the section of code that raised the event.

Message Message Message Message

Получает сообщение для события.Gets the message for the event.

(Inherited from BuildEventArgs)
ProjectFile ProjectFile ProjectFile ProjectFile

Получает или задает проект, построение которого выполнялось при отправке сообщения.Gets or sets the project which was building when the message was issued.

SenderName SenderName SenderName SenderName

Получает имя объекта Object, вызывающего событие.Gets the name of the Object raising the event.

(Inherited from BuildEventArgs)
Subcategory Subcategory Subcategory Subcategory

Получает пользовательскую подкатегорию события.Gets the custom subcategory of the event.

ThreadId ThreadId ThreadId ThreadId

Получает целочисленный идентификатор для потока, который вызвал событие.Gets an integer identifier for the thread that raised the event.

(Inherited from BuildEventArgs)
Timestamp Timestamp Timestamp Timestamp

Получает время возникновения события в виде DateTime.Gets the time the event was raised as a DateTime.

(Inherited from BuildEventArgs)

Методы

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Inherited from Object)

Применяется к