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

时间:2014-07-30 15:31:58

标签: c# visual-studio msbuild visual-studio-2013 msbuild-task

在我的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显示{{1在Visual Studio的“输出”面板中没有"12345678"文本。我在这里缺少什么?

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

1 个答案:

答案 0 :(得分:2)

  • 首先,增加消息详细程度:

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

添加标准消息以确保:

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

  • 重建MSBuild任务。

  • 重建消费者项目并观察输出窗格。