MSBuild自定义任务未在Visual Studio 2013中触发

本文关键字:2013 Studio Visual 自定义 任务 MSBuild | 更新日期: 2023-09-27 18:15:33

在我的solution中,我有一个单一类的项目:

using System.Windows;
using Microsoft.Build.Utilities;
namespace MetaCode
{
    public class MsBuildTask : AppDomainIsolatedTask
    {
        public override bool Execute()
        {
            System.Threading.Tasks.Task.Run(() => MessageBox.Show("12345678"));
            Log.LogMessage("12345678");
            return true;
        }
    }
}

我将这个添加到另一个项目的csproj文件中(现在我们称这个项目为"Genesis"):

<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <UsingTask TaskName="MetaCode.MsBuildTask" AssemblyFile="c:'temp'MetaCode.dll" />
    ...
    <Target Name="AfterBuild">
        <MetaCode.MsBuildTask />
    </Target>
</Project>

但是当我在Visual Studio 2013 Pro中点击F5时,它可以很好地构建项目,但没有发生任何事情…没有MessageBox显示"12345678",没有"12345678"文本在"输出"面板在Visual Studio。我遗漏了什么?

(文件"c:'temp'MetaCode.dll"存在于该位置,这是上述"MetaCode"项目的输出文件)

MSBuild自定义任务未在Visual Studio 2013中触发

  • 首先,增加消息的篇幅:

    Log.LogMessage(MessageImportance.High, "12345678");
    

并添加标准消息以确保:

<Target Name="AfterBuild">
    <Message Text="About to run MsBuildTask" Importance="high" />
    <MetaCode.MsBuildTask />
</Target>
  • 使用任务管理器,杀死所有MSBuild.exe进程以清除所有以前版本的自定义任务。

  • 重建MSBuild任务

  • 重建消费者项目并查看输出窗格。