피드로 돌아가기
Dev.toDevOps
원문 읽기
빌드 없이 .NET 프로젝트 그래프 분석, MSBuild Graph MCP 서버
I Built an MCP Server That Understands Your MSBuild Project Graph — Before You Build
AI 요약
Context
AI 코딩 어시스턴트의 MSBuild 프로젝트 구조 인식 부족으로 인한 환각 현상 발생. 기존 Binlog 분석 도구는 빌드 성공 후의 바이너리 로그에만 의존하는 사후 분석 구조. 빌드 불가능한 상태의 솔루션 분석 및 마이그레이션 전 의존성 파악 수단 부재.
Technical Solution
- MSBuild ProjectGraph API를 직접 호출하여 빌드 단계 없이 프로젝트 파일을 평가하는 사전 분석 방식 도입
- DAG(Directed Acyclic Graph) 기반의 위상 정렬을 통해 프로젝트 간 의존성 및 영향도 분석 로직 구현
- TFM(Target Framework Moniker) 불일치 및 순환 참조를 탐지하는 정적 분석 도구 설계
- MSBUILDENABLEALLPROPERTYFUNCTIONS 차단 및 XML 스캐너 도입을 통한 RCE 취약점(CVE-2025-21172) 방어 전략 적용
- ProjectCollection의 IsBuildEnabled 설정을 false로 고정하여 임의의 타겟 실행을 원천 차단하는 읽기 전용 아키텍처 구축
- TempSolutionBuilder를 이용해 실제 MSBuild API 환경에서 동작하는 무모킹(No-mock) 테스트 체계 구성
Impact
- 총 333개의 테스트 케이스를 CI 환경에서 약 12초 만에 수행 완료
- 실제 MSBuild API 테스트를 통해 CircularDependencyException 및 리소스 누수 등 8개의 프로덕션 버그 발견 및 수정
Key Takeaway
사후 로그 분석보다 소스 레벨의 정적 평가를 통한 사전 분석이 개발 주기 단축과 안정적인 마이그레이션 설계에 더 효과적임.
실천 포인트
.NET 솔루션 마이그레이션 전 TFM 불일치 및 의존성 꼬임 현상을 사전에 점검하여 빌드 오류 최소화할 것