IEventSourceとは? わかりやすく解説

IEventSource イベント


パブリック イベントパブリック イベント

  名前 説明
パブリック イベント AnyEventRaised ビルドによって他の種類のビルド イベントが発生したときに、発生します。
パブリック イベント BuildFinished ビルドが終了したときに発生します。
パブリック イベント BuildStarted ビルドが開始したときに発生します。
パブリック イベント CustomEventRaised ビルドによってカスタム イベントが発生したときに、発生します。
パブリック イベント ErrorRaised ビルドによってエラーが発生したときに、発生します。
パブリック イベント MessageRaised ビルドによってメッセージが発生したときに、発生します。
パブリック イベント ProjectFinished プロジェクトでビルドが終了したときに発生します。
パブリック イベント ProjectStarted プロジェクトでビルドが開始したときに発生します。
パブリック イベント StatusEventRaised ビルドによってステータス イベントが発生したときに、発生します。
パブリック イベント TargetFinished 対象でビルドが終了したときに発生します。
パブリック イベント TargetStarted 対象でビルドが開始したときに発生します。
パブリック イベント TaskFinished タスクの実行が完了したときに発生します。
パブリック イベント TaskStarted タスクの実行が開始したときに発生します。
パブリック イベント WarningRaised ビルドによって警告が発生したときに、発生します。
参照参照

関連項目

IEventSource インターフェイス
Microsoft.Build.Framework 名前空間

IEventSource インターフェイス

メモ : このインターフェイスは、.NET Framework version 2.0 で新しく追加されたものです。

ビルド エンジンによって発生するイベントを定義します。Logger は Initialize メソッドでこのインターフェイスを実装するオブジェクトを受け取り、それを使用して、受け取る対象のイベントにサブスクライブします。

名前空間: Microsoft.Build.Framework
アセンブリ: Microsoft.Build.Framework (microsoft.build.framework.dll 内)
構文構文

public interface IEventSource
public interface class IEventSource
public interface IEventSource
public interface IEventSource
使用例使用例

ビルド イベントに応答する基本 Logger を作成する方法を次の例に示します。

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;
    }
}
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
IEventSource メンバ
Microsoft.Build.Framework 名前空間

IEventSource メンバ

ビルド エンジンによって発生するイベントを定義します。Logger は Initialize メソッドでこのインターフェイスを実装するオブジェクトを受け取り、それを使用して、受け取る対象のイベントにサブスクライブします。

IEventSource データ型で公開されるメンバを以下の表に示します。


パブリック イベントパブリック イベント
  名前 説明
パブリック イベント AnyEventRaised ビルドによって他の種類のビルド イベントが発生したときに、発生します。
パブリック イベント BuildFinished ビルドが終了したときに発生します。
パブリック イベント BuildStarted ビルドが開始したときに発生します。
パブリック イベント CustomEventRaised ビルドによってカスタム イベントが発生したときに、発生します。
パブリック イベント ErrorRaised ビルドによってエラーが発生したときに、発生します。
パブリック イベント MessageRaised ビルドによってメッセージが発生したときに、発生します。
パブリック イベント ProjectFinished プロジェクトでビルドが終了したときに発生します。
パブリック イベント ProjectStarted プロジェクトでビルドが開始したときに発生します。
パブリック イベント StatusEventRaised ビルドによってステータス イベントが発生したときに、発生します。
パブリック イベント TargetFinished 対象でビルドが終了したときに発生します。
パブリック イベント TargetStarted 対象でビルドが開始したときに発生します。
パブリック イベント TaskFinished タスクの実行が完了したときに発生します。
パブリック イベント TaskStarted タスクの実行が開始したときに発生します。
パブリック イベント WarningRaised ビルドによって警告が発生したときに、発生します。
参照参照

関連項目

IEventSource インターフェイス
Microsoft.Build.Framework 名前空間



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「IEventSource」の関連用語

IEventSourceのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



IEventSourceのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS