И в чем заключалась оптимизация?
в мсбилде можно узнать тайминг операций. Удалось узнать что он тратит дохуя времени на рестор одного и того же. Объединил проекты с одинаковыми зависимостями, время уменьшилось. Потом проанализировал граф сборки, много было мест вида a -> b -> c
без ответвлений. Это убивает параллелизм сборки. Объединил такие куски графа в один.
Там где получались большие проекты пришлось копаться дольше чтобы разделить проект на N независимых чтобы их мсбилд мог билдить параллельно, а не последовательно