Как изменить уровень детализации задачи MSBuild?

Я хотел бы иметь разную степень детализации для проекта msbuild, вызываемого из командной строки, и тех, которые вызываются задачей MSBuild из проекта. Например:

Внутри my.proj:

<Target Name=Foo>
  <MSBuild Projects="a.csproj;b.csproj;c.csproj"/>
</Target>

В командной строке:

msbuild /v:d my.proj

теперь, когда задача MSBuild строит файлы .csproj, она также делает это с подробным описанием. Однако я бы хотел построить его с минимальным количеством подробностей.

Я знаю, что можно вызвать msbuild вручную следующим образом:

<Target Name=Foo>
  <Exec Command="msbuild /v:m a.csproj"/>
  <Exec Command="msbuild /v:m b.csproj"/>
  <Exec Command="msbuild /v:m c.csproj"/>
</Target>

или на практике

<Target Name=Foo>
  <Exec Command="msbuild /v:m %(Projectlist.Identity)"/>
</Target>

, и это, конечно, работает хорошо, но тогда я больше не могу получить функциональность переключателя BuildInParallel ( Я не думаю, что можно вызвать msbuild из командной строки с несколькими проектами без их включения в решение?)

Обновление

Я выбрал вариант Ludwo: в основном создать настраиваемый регистратор, который содержит два ConsoleLogger в качестве члена . Один из них имеет подробность, передаваемую в командной строке, другой - «минимальный». Регистратор регистрирует все события и передает их одному из регистраторов в зависимости от того, создается файл csproj в данный момент или нет. Вывод выглядит как обычно, за исключением того, что он не включает тысячи строк из файлов csproj.

11
задан stijn 28 October 2011 в 09:33
поделиться