【问题标题】:Why does my MSBuild custom task not work?为什么我的 MSBuild 自定义任务不起作用?
【发布时间】:2021-08-26 10:26:09
【问题描述】:

按照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>

但是当我构建这个项目时,我在构建输出中看不到这两条消息中的任何一条。我已经尝试了&lt;HelloWorld/&gt;&lt;MyTasks.HelloWorld/&gt;,并将任务名称属性设置为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

如何让它发挥作用?

【问题讨论】:

    标签: .net msbuild


    【解决方案1】:

    问题是我忘记了Target 元素上的BeforeTargets 属性。这是更新后的目标元素:

      <Target Name="MyTarget" BeforeTargets="Build">
        <Message Text="I want to run a custom task." Importance="High"/>
        <HelloWorld/>
      </Target>
    

    【讨论】:

      猜你喜欢
      • 2018-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      相关资源
      最近更新 更多