TaskStarted
タスクとそのパラメーターに関するイベントを受信したときに情報をログに記録するMSBuildロガーモジュールを作成しようとしています。
ビルドは次のコマンドで実行されます。
MSBuild.exe /logger:MyLogger.dll build.xml
build.xml内には一連のタスクがあり、そのほとんどは(C ++またはC#)ソリューションをコンパイルするためにカスタム作成されており、次のカスタムタスクでアクセスできます。
<DoCompile Desc="Building MyProject 1" Param1="$(Param1Value)" />
<DoCompile Desc="Building MyProject 2" Param1="$(Param1Value)" /> <!-- etc -->
カスタムビルドタスクDoCompile
は次のように定義されます。
public class DoCompile : Microsoft.Build.Utilities.Task
{
[Required]
public string Description { set { _description = value; } }
// ... more code here ...
}
ビルドの実行中、各タスクが開始されると、ロガーモジュールはIEventSource.TaskStarted
次のようにサブスクライブされたイベントを受信します。
public class MyLogger : Microsoft.Build.Utilities.Logger
{
public override void Initialize(Microsoft.Build.Framework.IEventSource eventSource)
{
eventSource.TaskStarted += taskStarted;
}
private void taskStarted(object sender, Microsoft.Build.Framework.TaskStartedEventArgs e)
{
// write e.TaskName, attributes and e.Timestamp to log file
}
}
私が抱えている問題は、taskStarted()
上記の方法で、イベントが発生したタスクの属性にアクセスできるようにしたいということです。ロガーコードにしかアクセスできず、build.xmlまたはカスタムビルドタスクを変更できません。
誰かが私がこれを行うことができる方法を提案できますか?