본문 바로가기
MFC

"xsd.exe"이(가) 종료되었습니다(코드: 1) 해결 방법

by leo21c 2026. 5. 22.
MSVS 2026 환경에서 MFC DLL 빌드 중 xsd.exe(코드: 1) 에러가 발생하는 가장 핵심적인 원인은 Visual Studio 2017 버전부터 C++ 프로젝트에 대한 xsd.exe 지원(CodeProvider 기반의 C++ 헤더 생성 기능)이 공식적으로 중단(Deprecated) 및 제거되었기 때문입니다. [1]
이전 구형 VS 버전에서 작성된 MFC 프로젝트가 빌드 이벤트나 사용자 지정 빌드 단계(Custom Build Step)를 통해 XML 스키마(.xsd) 파일로부터 C++ 소스 코드를 자동 생성하도록 설정되어 있다면, 최신 컴파일러 환경인 VS 2026에서는 이를 정상적으로 처리하지 못하고 런타임 오류(종료 코드 1)를 발생시킵니다. 
구체적인 발생 원인과 해결 방법은 다음과 같습니다.

1. 주요 원인 분석
  • C++ 코드 생성 공급자(CppCodeProvider) 누락
    xsd.exe가 C++ 클래스(.h, .cpp)를 생성하려면 내부적으로 CppCodeProvider.dll이 필요합니다. 하지만 최신 Visual Studio에서는 이 구성 요소가 전역 어셈블리 캐시(GAC)에 기본 등록되지 않아 xsd.exe가 실행 도중 실패하게 됩니다.
  • 32비트/64비트 호환성 문제
    빌드하려는 MFC DLL의 아키텍처(x64 등)와 .NET Framework 기반인 xsd.exe가 어셈블리를 로드하는 아키텍처(AnyCPU)가 일치하지 않아 호환성 오류가 나기도 합니다.
  • XSD 스키마 종속성 오류
    .xsd 파일 내부에 외부 URL 주소나 다른 파일(.xsd)을 참조(xs:import, xs:include)하는 코드가 포함되어 있지만, 오프라인 빌드 환경이거나 해당 파일이 경로에 없어 스키마 검증에 실패한 경우입니다.
     

솔루션 탐색기에서 찾아 속성에서 "블드에서 제외" - 예 변경후 빌드 실행


2. 해결 방법
방법 ①: 프로젝트에서 XSD 자동 생성 설정 제거 (가장 권장)
프로젝트가 오래되었거나 이미 필요한 C++ 헤더 파일(.h)이 프로젝트 폴더 내에 생성되어 존재한다면, 매번 빌드할 때마다 xsd.exe를 실행할 필요가 없습니다.
  1. Visual Studio [솔루션 탐색기]에서 등록된 .xsd 파일을 찾습니다.
  2. 해당 파일을 마우스 오른쪽 단추로 클릭한 후 [속성]으로 이동합니다.
  3. [일반] 탭의 [빌드에서 제외] 항목을 '예'로 변경하거나, [항목 형식]을 '사용자 지정 빌드 도구'에서 '문서' 또는 '없음'으로 변경합니다.
  4. 만약 [프로젝트 속성] ➔ [빌드 이벤트] (사전 빌드/사후 빌드)에 xsd.exe ... 명령어가 직접 기입되어 있다면 해당 줄을 삭제합니다.
방법 ②: CppCodeProvider.dll 수동 등록 (기능 유지 필요 시)
만약 무조건 빌드 시점에 스키마를 해석하여 C++ 코드를 계속 뽑아내야 하는 상황이라면 아래 방법을 통해 제거된 연동 기능을 강제로 되살려야 합니다. [1]
  1. Visual Studio용 개발자 명령 프롬프트(Developer Command Prompt)를 관리자 권한으로 실행합니다.
  2. 아래 명령어를 입력하여 Visual Studio 디렉터리 내에 남아있는 전역 공급자 DLL 파일 경로를 확인하고, gacutil 도구를 사용해 GAC에 강제 등록합니다.
LIST