覆盖MSBuild中的继承任务

时间:2011-06-15 13:00:51

标签: msbuild override verbosity

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

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

我是否还有其他任何方式可以影响<Copy>的详细程度,或者一般情况下会影响MSBuild的详细程度?

1 个答案:

答案 0 :(得分:1)

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

另一个更简单的选择是覆盖复制任务。创建自己的名为Copy的自定义任务,并使用UsingTask声明引用它。我认为这个声明需要首先出现(不能记住任务覆盖是先赢一次还是前一赢)。同样,您可以在MSBuild程序集中继承默认的Copy任务并覆盖Execute,或者只是滚动自己的。在任务中,您可以通过调用Log.LogMessage并提供每条消息的级别来调整与各种消息关联的详细级别,以便您可以控制它们将出现的命令行详细程度。