2009-08-05 2 views
3

우리는 50 개 프로젝트 (주로 클래스 라이브러리 및 일부 Win Form 프로젝트)가있는 Visual Studio 2005 솔루션을 제공합니다.MSBuild는 깨끗한 빌드를 위해 Visual Studio의 3 배의 메모리가 필요합니다.

새로 시작한 Visual Studio 피크 메모리 사용 (작업 관리자가 기록)으로 깨끗한 디버그 빌드를 수행하면 약 500MB가 표시됩니다.

MSBuild와 동일한 빌드 (클린, 디버그)를 수행하면 최대 메모리 사용량은 약 1600MB이며 결국 OutOfMemory 예외로 인해 실패합니다.

MSBuild를 LargeProject.sln/대상 :

이것은 내가 실행 해요 명령은 깨끗하고, 구축/NOLOGO/부동산 : 구성 = 디버그/상세 : 최소한의 모두 실행 된

2GB의 물리적 RAM이있는 Windows XP Professional 32 비트가 설치된 동일한 PC에 설치하십시오.

Visual Studio 및 MSBuild에서의 빌드 차이점을 설명하는 MSDN article을 찾았지만 빌드에 메모리가 3 회 필요한 이유는 설명하지 않습니다.

왜 이런 일이 발생하는지 알고 있습니까? 그리고 MSBuild의 메모리 요구 사항을 줄이기 위해 할 수있는 일이 있다면.

답변

0

거의 모든 다른 프로젝트에서 참조한 Visual Studio 솔루션에서 프로젝트를 제거했습니다. 그런 다음 프로젝트 대신 프로젝트의 dll을 참조하도록 프로젝트를 변경했습니다. 이것은 MSBuild의 메모리 사용량을 1600MB에서 약 1200MB (400MB 차이)로 떨어 뜨려 성공했습니다.

제거 된 프로젝트는 약 5 개의 클래스가 아니었고 최종 디버그 dll은 40kb이고 릴리스 버전은 28kb였습니다. 이 프로젝트에는 Microsoft.VisualBasic.Compatibility, System 및 System.Windows.Forms라는 세 가지 참조가 있습니다.

적은 수의 참조 된 솔루션에서 다른 프로젝트를 제거하려고했지만 MSBuild가 여전히 OutOfMemory 예외로 실패했습니다.