In my solution
I have a project with this single class:
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;
}
}
}
I added this to another project's csproj
file (let's call this project "Genesis" for now):
<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>
But when I hit F5 in Visual Studio 2013 Pro, it builds the projects fine, but nothing happens... No MessageBox
showing "12345678"
, and no "12345678"
text in the "output" panel in Visual Studio. What am I missing here?
(the file "c:\temp\MetaCode.dll" exists in that location, and this is the output file of the above "MetaCode" project)
First, increase message verbosity:
Log.LogMessage(MessageImportance.High, "12345678");
And add a standard message just to make sure:
<Target Name="AfterBuild">
<Message Text="About to run MsBuildTask" Importance="high" />
<MetaCode.MsBuildTask />
</Target>
Using task manager, kill all MSBuild.exe
processes to clear all previous versions of your custom task.
Rebuild the MSBuild task.