在我的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”项目的输出文件)
答案 0 :(得分:2)
首先,增加消息详细程度:
Log.LogMessage(MessageImportance.High, "12345678");
添加标准消息以确保:
<Target Name="AfterBuild">
<Message Text="About to run MsBuildTask" Importance="high" />
<MetaCode.MsBuildTask />
</Target>
使用任务管理器,终止所有MSBuild.exe
进程以清除所有以前版本的自定义任务。
重建MSBuild任务。