Больше центральных процессоров/ядер поможет со временем изготовления VS.NET?

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

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

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

12
задан LoveMeSomeCode 5 April 2010 в 17:25
поделиться

5 ответов

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

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

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

9
ответ дан 2 December 2019 в 20:16
поделиться

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

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

0
ответ дан 2 December 2019 в 20:16
поделиться

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

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

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

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

2
ответ дан 2 December 2019 в 20:16
поделиться

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

1
ответ дан 2 December 2019 в 20:16
поделиться

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

4
ответ дан 2 December 2019 в 20:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: