MSBuild требует в 3 раза больше памяти Visual Studio для чистой сборки - PullRequest
3 голосов
/ 06 августа 2009

У нас есть решение Visual Studio 2005 с 50 проектами (в основном это библиотеки классов и некоторые проекты Win Form).

Выполнение чистой отладочной сборки с только что запущенным пиковым использованием памяти Visual Studio (записано диспетчером задач) показывает около 500 МБ.

При такой же сборке (чистая, отладочная) с MSBuild пиковое использование памяти составляет около 1600 МБ, и в итоге происходит сбой с исключением OutOfMemory.

Я выполняю команду:

MSBuild LargeProject.sln / target: clean; build / nologo / property: конфигурация = отладка / подробность: минимальная

Оба были запущены на одном компьютере с 32-битной Windows XP Professional с физическим объемом 2 ГБ.

Я нашел эту статью MSDN , описывающую различия между сборкой в ​​Visual Studio и MSBuild, но не объясняет, почему сборка требует в 3 раза больше памяти.

Кто-нибудь знает, почему это происходит? И если есть что-то, что я могу сделать, чтобы уменьшить требования к памяти MSBuild.

1 Ответ

0 голосов
/ 18 августа 2009

Я удалил проект из решения Visual Studio, на который ссылались почти все другие проекты. Затем изменил проекты, чтобы ссылаться на DLL проекта вместо проекта. Это уменьшило использование памяти MSBuild с 1600 МБ до 1200 МБ (разница 400 МБ) и было успешным.

Удаленный проект был не очень большим, около 5 классов, а финальная dll отладки составляла 40 КБ, а версия выпуска - 28 КБ. Проект имеет 3 ссылки Microsoft.VisualBasic.Compatibility, System и System.Windows.Forms.

Я пытался удалить другие проекты из решения, на которые ссылались меньше, но MSBuild все еще не удался с исключением OutOfMemory.

...