Как бы мне ни нравился MSBuild, не существует встроенного способа сделать это при использовании файла решения для сборки (как вы уже обнаружили). С включенным анализом Решарпера я обнаружил, что ошибки компилятора в настоящее время очень редки для меня, поэтому у меня редко возникает проблема с подавляющим количеством сообщений об ошибках.
В моем предыдущем магазине кто-то обычно собирал сборку так, чтобы один из корневых проектов был представлен в более чем 60 проектах, и поэтому многие люди запускали проекты по отдельности из командной строки, аналогично запуску отдельных команд Make. файлы.
Если вы действительно хотите решить эту проблему иначе, чем макрос, который вы упомянули, вы можете создать внешний файл msbuild, который выполняет проекты по отдельности и проверяет ошибки между запусками. Вам нужно будет сохранить правильный порядок сборки, и вам нужно будет запустить его из командной строки и / или добавить ярлык в пункт меню «Инструменты».
Вот пример:
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="Build">
<MSBuild ContinueOnError="false" Projects="log4net\log4net.csproj" Targets="Build">
<Output TaskParameter="TargetOutputs" ItemName="BuildOutput"/>
</MSBuild>
<MSBuild ContinueOnError="false" Projects="Project1\Project1.csproj" Targets="Build">
<Output TaskParameter="TargetOutputs" ItemName="BuildOutput"/>
</MSBuild>
<MSBuild ContinueOnError="false" Projects="Project3\Project3.csproj" Targets="Build">
<Output TaskParameter="TargetOutputs" ItemName="BuildOutput"/>
</MSBuild>
</Target>
<!-- <OnError ExecuteTargets="ErrorTarget" /> //-->
</Project>
Замените проекты вашими проектами, и группе нужно будет подражать для цели Clean.
Хотелось бы, чтобы было лучшее решение, и я не знаю, почему команда MSBuild не добавит эту функцию в продукт. Как вы сказали, «Разберись с этим десятилетия назад». FWIW, я не знаю, насколько хорошо это работает со сложными зависимостями сборки и параллелизмом сборки.
Мои проблемы с MSBuild сосредоточены вокруг ResolveAssemblyReferences и задач ResolveComReferences, которые являются самой медленной частью сборки в большом решении с большим / сложным деревом зависимостей проекта (большое относительное относительно ~ 30 проектов как минимум).
Надеюсь, это поможет.