Будет ли больше процессоров/ядер работать с временем сборки VS.NET?

Мне было интересно, знает ли кто-нибудь, есть ли у Visual Studio.NET параллельный процесс сборки или нет? У меня есть решение с большим количеством проектов, каждый проект имеет много разметки/кода, множество типов и т.д. Просто сижу там с intellisense, работает до 700 МБ. Но время сборки очень медленное и только кажется максимальным из одного из двух ядер процессора.

Означает ли это, что процесс сборки является однопоточным? Цепочка зависимостей сборки решения не является линейной, поэтому я не понимаю, почему она не может строить некоторые из проектов параллельно. Я помню, как Джоэл Спольский писал о своем новом SSD, и как это не помогало во время компиляции, но он не упомянул, какой компилятор он использовал. Мы используем VS 2005. Кто-нибудь знает, как работает компиляция? И это в любом случае лучше/лучше в 2008/2010 году?

EDIT: Много хороших отзывов, здесь, но меня интересует только С# и ASP.NET. Нет любви к нам, веб-люди?

Ответ 1

MSBuild (который VS использует для сборки, с 2005/.NET2) поддерживает параллельные сборки. По умолчанию VS будет устанавливать максимальную степень parallelism на количество процессоров. Использовать инструменты | Варианты | Проекты и решения | Build и Run, чтобы переопределить это значение по умолчанию.

Конечно, любая сборка может иметь более ограниченную (или нет) способность разрешать параллельные сборки. Например. только одна сборка в решении не дает возможности строить параллельно. Точно так же большое количество сборок с большим количеством зависимостей может блокировать parallelism (зависит от B, C зависит от A & B, D зависит от C не имеет возможности для параллельных построений).

(NB. для С++, в VS 2005 и 2008 использует свою собственную систему сборки, в 2010 С++ также будет построен с MSBuild.)

Ответ 2

У Scott Hanselman есть сообщение в блоге от пары лет назад, в котором подробно описывается получение Быстрые сборки с помощью MSBuild с использованием параллельных сборных и многоядерных процессоров, которые должны быть представляет интерес. У него также есть последующее сообщение Hack: параллельные MSBuild из среды Visual Studio IDE.

Ответ 3

Я бы предположил, что накопитель SSD обеспечит самое большое преимущество явно для сборки

SuperUser, который также опровергает статью Джоэля

SO просят лучший ноутбук и т.д.: обсуждения на SSD, ядрах, работе VS и т.д.

Квалификатор: я купил Intel SSD для домашнего использования месяц или 3 назад. Лорд это быстро и, возможно, лучший кусок набора, который я когда-либо покупал, за исключением моего Voodoo 2...

Ответ 4

В VS2k5 это зависит от того, какой язык вы пытаетесь использовать. C/С++ имеет "экспериментальную" поддержку многопоточного здания, но эта функция официально не поддерживается до 2k8 с помощью /m: switch

Ответ 5

Я использовал параллельные сборки в Visual Studio 2008. Он ускоряет работу, но имеет много раздражающих побочных эффектов.

Я часто получаю неудачные сборки не потому, что некоторая компиляция не удалась, а потому, что VS не удалось записать в заблокированную базу данных символов. У меня также есть действительно перепутанные результаты Intellisense. Иногда мне нужно повторить сборку два или три раза, чтобы добиться окончательного успеха.