Я бы хотел иметь разные подробности для проекта 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.