MSBuild содержит ошибку и неправильно учитывает зависимости проекта, добавленные на уровне решения. Взгляните на http://social.msdn.microsoft.com/Forums/en-US/msbuild/thread/80cc6447-b720-4806-8395-7c257b207613/ и https://connect.microsoft.com/VisualStudio/feedback/details/613284/msbuild-4-does-not-respect-build-order-when-building-a-solution
Сообщение Microsoft на странице подключения указывает на то, что это ошибка в 64-разрядной версии MSBuild. Попробуйте переключиться на 32-разрядную версию, чтобы посмотреть, решит ли это проблему.
Если вы не можете этого сделать или это не работает, есть два других варианта. Ни один из них не идеален.
Первый вариант - вручную отредактировать файл SLN и изменить порядок отображения проектов в файле в соответствии с желаемым порядком сборки. Я полагаю, что решение Виктора было бы гораздо лучшей идеей, поскольку дополнительные изменения в файле решения могли бы в конечном итоге перезаписать изменения снова.
Второй вариант - вручную экспортировать «метапроект» MSBuild для решения, напрямую отредактировать порядок сборки и добавить любые другие необходимые вам настройки. Судя по тому, что я прочитал, даже в Microsoft они не компилируют решения "собачья еда" - вместо этого они полностью избегают их во время сборок и вместо этого используют собственные файлы MSBuild.
Чтобы сгенерировать metaproj, установите для переменной среды MSBuildEmitSolution значение 1. После запуска MSBuild для решения вы увидите файл «.metaproj» в том же каталоге - он содержит скрипт, который MSBuild создает в памяти для компиляции решение. Вы должны иметь возможность внести необходимые изменения, зарегистрировать его, а затем настроить сервер сборки для его компиляции.
Эта проблема исчезнет в следующем выпуске Visual Studio. На странице Microsoft Connect есть сообщение от Microsoft о том, что это будет исправлено в следующем выпуске, и, по слухам, они избавляются от файлов .sln и заменяют их соответствующими проектами MSBuild.