为什么我的 MSBuild 自定义任务不起作用?
Why does my MSBuild custom task not work?
按照 this 教程,我正在尝试 运行 构建过程中的自定义任务。我有以下任务:
namespace MyTasks
{
public class HelloWorld : Task
{
public override bool Execute()
{
Log.LogMessage(Microsoft.Build.Framework.MessageImportance.High, "Hello World.");
return true;
}
}
}
我已经通过以下方式将其包含在另一个项目中,包括另一条消息:
<UsingTask AssemblyFile="C:\Path\To\MyTasks.dll" TaskName="MyTasks.HelloWorld"/>
<Target Name="MyTarget">
<Message Text="I want to run a custom task." Importance="High"/>
<HelloWorld/>
</Target>
但是当我构建这个项目时,我在构建输出中看不到这两条消息中的任何一条。我已经尝试了 <HelloWorld/>
和 <MyTasks.HelloWorld/>
,并将任务名称属性设置为 HelloWorld
。
在 Visual Studio 我设置了两个
Tools -> Options -> Projects and Solutions -> MSBuild project build output verbosity
和
Tools -> Options -> Projects and Solutions -> MSBuild project build log file verbosity
至Normal
。
如何让它发挥作用?
问题是我忘记了 Target
元素上的 BeforeTargets
属性。这是更新后的目标元素:
<Target Name="MyTarget" BeforeTargets="Build">
<Message Text="I want to run a custom task." Importance="High"/>
<HelloWorld/>
</Target>
按照 this 教程,我正在尝试 运行 构建过程中的自定义任务。我有以下任务:
namespace MyTasks
{
public class HelloWorld : Task
{
public override bool Execute()
{
Log.LogMessage(Microsoft.Build.Framework.MessageImportance.High, "Hello World.");
return true;
}
}
}
我已经通过以下方式将其包含在另一个项目中,包括另一条消息:
<UsingTask AssemblyFile="C:\Path\To\MyTasks.dll" TaskName="MyTasks.HelloWorld"/>
<Target Name="MyTarget">
<Message Text="I want to run a custom task." Importance="High"/>
<HelloWorld/>
</Target>
但是当我构建这个项目时,我在构建输出中看不到这两条消息中的任何一条。我已经尝试了 <HelloWorld/>
和 <MyTasks.HelloWorld/>
,并将任务名称属性设置为 HelloWorld
。
在 Visual Studio 我设置了两个
Tools -> Options -> Projects and Solutions -> MSBuild project build output verbosity
和
Tools -> Options -> Projects and Solutions -> MSBuild project build log file verbosity
至Normal
。
如何让它发挥作用?
问题是我忘记了 Target
元素上的 BeforeTargets
属性。这是更新后的目标元素:
<Target Name="MyTarget" BeforeTargets="Build">
<Message Text="I want to run a custom task." Importance="High"/>
<HelloWorld/>
</Target>