开发者

Overriding inherited tasks in MSBuild

开发者 https://www.devze.com 2023-03-12 23:31 出处:网络
I have an inherited MSBuild script, which calls targets that I am not allowed to change. However, some of these targets call methods that are currently too verbose in the output window - for example,

I have an inherited MSBuild script, which calls targets that I am not allowed to change. However, some of these targets call methods that are currently too verbose in the output window - for example, the <Copy> task is used so much that it's output is draining any other relevant message.

Since I don't have access to the target calling <Copy>, I can't switch it to something less verbose. I've played around with the /verbosity switch, but minimal gives me too little output, and normal gives me too much.

Is there any other way I can affect the verbosity of <Copy> specifically, or of MSBuild in gen开发者_StackOverflow社区eral?


You can create your own logger. It is a little bit involved, but basically allows you to fine tune exactly what messages you want to see. The easiest thing to do would be to override the default logger.

Another easier option is to override the Copy task. Create your own custom task named Copy, and refer to it with a UsingTask declaration. This declaration needs to appear first, I think (can't remember if task override is first-one-wins or last-one-wins). Again, you can subclass the default Copy task in the MSBuild assembly and override Execute, or just roll your own. In the task, you can adjust the verbosity level associated with various messages by calling Log.LogMessage and supplying the level of each message, so you can control which command line verbosity they will appear with.

0

精彩评论

暂无评论...
验证码 换一张
取 消