빌드 서버는 코어 4개짜리다. 음, CPU 2 * Core 2이던가? 하여튼,
빌드 서버에선 거의 항상 Rebuild를 한다. 그런데 이게 문제다. 코어 4개를 이용해 A, B, C, D 네 개의 프로젝트를 동시에 빌드하는데, 이 각각의 프로젝트마다 Clean, Build를 한다. 여기까진 문제가 없다.
- 프로젝트 간 의존성
-
A - DependsOnA_1, DependsOnA_2 B C D
자, 이제 A 프로젝트와 B 프로젝트가 시차를 두고 순서대로 빌드를 마쳤고, DependsOnA_1과 DependsOnA_2가 그 자리를 순서대로 차지한다고 해보자. 그런데 Rebuild시 비주얼 스튜디오는 각 프로젝트마다 Clean과 Build를 반복한다. 즉, DependsOnA_1이 A를 지웠다 다시 빌드하고 자기 자신을 빌드할 시점에 DependOnA_2가 빌드를 시작하면 문제가 된다. DependsOnA_2가 A를 Clean했다 Build할텐데, DependsOnA_1이 빌드할 때 필요한 A의 산출물이 지워졌으니 빌드가 성공할 리 없다.
해결책은 간단하다. Visual Studio로 병렬 빌드를 할 땐 Rebuild하지 않으면 된다. 우선 전체 솔루션에 대해 Clean을 한 후, Build하면 된다.
Author Details
Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.