【问题标题】:Overriding inherited tasks in MSBuild覆盖 MSBuild 中的继承任务
【发布时间】:2011-06-15 13:00:51
【问题描述】:

我有一个继承的 MSBuild 脚本,它调用我不允许更改的目标。但是,其中一些目标调用当前在输出窗口中过于冗长的方法 - 例如,<Copy> 任务被使用太多以至于它的输出正在耗尽任何其他相关消息。

由于我无法访问调用<Copy> 的目标,因此我无法将其切换为不那么冗长的内容。我玩过/verbosity 开关,但minimal 给我的输出太少,而normal 给我的输出太多。

有没有其他方法可以特别影响<Copy> 的详细程度,或一般的MSBuild?

【问题讨论】:

    标签: msbuild overriding verbosity


    【解决方案1】:

    您可以创建自己的记录器。它有点涉及,但基本上可以让您精确调整您想要查看的消息。最简单的做法是覆盖默认记录器。

    另一个更简单的选择是覆盖复制任务。创建您自己的名为 Copy 的自定义任务,并使用 UsingTask 声明来引用它。我认为这个声明需要首先出现(不记得任务覆盖是第一个获胜还是最后一个获胜)。同样,您可以将 MSBuild 程序集中的默认复制任务子类化并覆盖执行,或者只是滚动您自己的任务。在任务中,您可以通过调用 Log.LogMessage 并提供每条消息的级别来调整与各种消息相关联的详细级别,这样您就可以控制它们将显示的命令行详细级别。

    【讨论】:

    • 我已经玩了一点,看看我是否可以弄清楚如何覆盖复制任务,但我以前从未编写过 MSBuild 任务,也不知道应该在 Execute( ) 方法等。您是否愿意提供一个仅进行复制的简单实现,然后我可以添加我需要的任何其他内容?我将不胜感激。 =)
    猜你喜欢
    • 1970-01-01
    • 2019-06-29
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    • 1970-01-01
    • 1970-01-01
    • 2015-12-12
    相关资源
    最近更新 更多