如何从自定义MSBuild任务将输出写入控制台?

时间:2020-03-06 15:02:19  来源:igfitidea点击:

我正在尝试调试MSBuild任务,并且我知道有一些方法可以从自定义任务中写入MSBuild日志,但我忘记了如何做。

解决方案

基本的Task类具有Log属性,我们可以使用:

Log.LogMessage("My message");

为了进行单元测试,我将记录器包裹在一个帮助器类中

public static void Log(ITask task, string message, MessageImportance importance)
{
    try
    {
        BuildMessageEventArgs args = new BuildMessageEventArgs(message, string.Empty, 
            task.ToString(), importance);
        task.BuildEngine.LogMessageEvent(args);
    }
    catch (NullReferenceException)
    {
        // Don't throw as task and BuildEngine will be null in unit test.
    }
}

如今,为了方便起见,我可能会将其转换为扩展方法。