다음을 통해 공유


이전 버전의 Visual Studio에서 C++ 프로젝트 업그레이드

이전 버전의 Visual Studio에서 만든 프로젝트를 업그레이드하려면 최신 버전의 Visual Studio에서 프로젝트를 엽니다. Visual Studio는 프로젝트를 현재 스키마로 업그레이드하도록 제공합니다.

아니요를 선택하면 프로젝트가 업그레이드되지 않습니다. Visual Studio 2010 이상에서 만든 프로젝트의 경우 최신 버전의 Visual Studio에서 프로젝트를 계속 사용할 수 있습니다. 이전 도구 집합을 계속 대상으로 지정하도록 프로젝트 속성을 설정하기만 하면 됩니다. 이전 버전의 Visual Studio를 컴퓨터에 남겨 두면 이후 버전에서 해당 도구 집합을 사용할 수 있습니다. 예를 들어 프로젝트가 Windows XP에서 계속 실행되어야 하는 경우 Visual Studio 2019로 업그레이드할 수 있습니다. 그런 다음, 프로젝트 속성에서 도구 집합을 v141_xp 이전 버전으로 지정합니다. 자세한 내용은 Visual Studio의 네이티브 멀티 타기팅을 사용하여 이전 프로젝트 빌드를 참조하세요.

예를 선택하면 프로젝트가 현재 위치에서 업그레이드됩니다. 이전 버전으로 다시 변환할 수 없습니다. 업그레이드 시나리오에서는 기존 프로젝트 및 솔루션 파일의 백업 복사본을 만드는 것이 좋습니다.

참고 항목

Visual Studio 2022는 확장이 있는 .dsp 프로젝트 형식 .dsw 의 업그레이드에 대한 지원이 더 이상 사용되지 않습니다. Visual Studio 2019와 같은 이전 버전의 Visual Studio를 사용하여 이러한 프로젝트를 업그레이드한 다음 Visual Studio 2022에서 업그레이드하여 Visual Studio의 최신 도구와 기능을 사용할 수 있습니다.

보고서 업그레이드

프로젝트를 업그레이드하면 업그레이드 보고서가 표시됩니다. 보고서는 프로젝트 폴더에도 UpgradeLog.htm 저장됩니다. 업그레이드 보고서는 변환 중에 발견된 문제에 대한 요약을 보여 줍니다. 다음을 포함하여 변경된 내용에 대한 몇 가지 정보가 나열됩니다.

  • 프로젝트 속성입니다.

  • 파일을 포함합니다.

  • 컴파일러 규칙 향상 또는 표준 변경으로 인해 더 이상 새로 컴파일되지 않는 코드입니다.

  • 더 이상 사용할 수 없는 Visual Studio 또는 Windows 기능을 사용하는 코드입니다. 또는 Visual Studio의 기본 설치에 포함되지 않거나 제품에서 제거된 헤더 파일입니다.

  • 이름이 바뀐 API, 변경된 함수 서명 또는 사용되지 않는 함수와 같은 API의 변경으로 인해 더 이상 컴파일되지 않는 코드입니다.

  • 경고가 오류로 변하는 등 진단 변경으로 인해 더 이상 컴파일되지 않는 코드

  • 특히 /NODEFAULTLIB를 사용하는 경우 변경된 라이브러리로 인한 링커 오류입니다.

  • 동작 변경으로 인한 런타임 오류 또는 예기치 않은 결과입니다.

  • 도구에 도입된 오류입니다. 문제가 발견되면 일반적인 지원 채널을 통해 또는 Visual Studio C++ 개발자 커뮤니티 페이지를 사용하여 Visual C++ 팀에 보고합니다.

일부 업그레이드된 프로젝트 및 솔루션은 수정 없이 성공적으로 빌드할 수 있습니다. 그러나 대부분의 프로젝트에는 프로젝트 설정과 소스 코드를 모두 변경해야 할 수 있습니다. 이러한 문제를 해결하는 올바른 방법은 하나도 없지만 단계적 접근 방식을 사용하는 것이 좋습니다. 시작하기 전에 잠재적인 업그레이드 문제에 대한 개요를 검토하여 다양한 종류의 일반적인 오류에 대한 자세한 내용을 참조하세요.

  1. 플랫폼 도구 집합, C++ 언어 표준 및 Windows SDK 버전(해당하는 경우)을 기본 버전으로 설정합니다. (프로젝트>속성>구성 속성>일반)

  2. 오류가 많은 경우 일부 옵션을 수정하는 동안 일시적으로 해제할 수 있습니다. 옵션을 /permissive- 해제하려면 프로젝트>속성>구성 속성>C/C++>언어를 사용합니다. 코드 분석 옵션을 해제하려면 프로젝트>속성>구성 속성>코드 분석을 사용합니다.

  3. 모든 종속성이 있고 포함 경로 또는 라이브러리 위치가 올바른지 확인합니다. (프로젝트>속성>구성 속성>VC++ 디렉터리)

  4. 더 이상 존재하지 않는 API에 대한 참조로 인한 오류를 식별하고 수정합니다.

  5. 컴파일을 방해하는 나머지 오류를 수정합니다. 일반적인 오류에 대한 수정 사항은 잠재적인 업그레이드 문제 개요를 참조하세요.

  6. MSVC에서 이전에 컴파일된 비준수 코드로 인해 발생하는 새 오류를 다시 켜 /permissive- 고 수정합니다.

  7. 코드 분석을 켜서 더 이상 허용되지 않는 잠재적인 문제 또는 오래된 코딩 패턴을 식별합니다. 코드 분석에서 많은 오류에 플래그를 지정하는 경우 가장 중요한 오류에 먼저 집중하기 위해 일부 경고를 해제할 수 있습니다. IDE는 일부 종류의 문제에 대한 빠른 수정에 도움이 될 수 있습니다.

  8. 코드를 현대화할 수 있는 다른 기회를 고려합니다. 예를 들어 사용자 지정 데이터 구조 및 알고리즘을 C++ 표준 라이브러리 또는 Boost 오픈 소스 라이브러리의 데이터 구조로 바꿉니다. 표준 기능을 사용하면 다른 사용자가 코드를 더 쉽게 유지 관리할 수 있습니다. 이 코드는 표준 위원회 및 광범위한 C++ 커뮤니티의 많은 전문가에 의해 잘 테스트되고 검토되었다고 확신할 수 있습니다.

수정하기 어려운 오류의 경우 솔루션을 검색하거나 Microsoft Learn Q&A질문을 게시할 수 있습니다. C++ 컴파일러 및 도구에 문제가 있는 경우 C++ 개발자 커뮤니티 웹 사이트를 사용해 보세요.

이 섹션의 내용

잠재적인 업그레이드 문제 개요
코드를 유니버설 CRT로 업그레이드
WINVER 및 _WIN32_WINNT 업데이트
라이브러리 내부 요소에 대한 종속성 해결
부동 소수점 마이그레이션 문제
Visual Studio에서 사용되지 않는 C++ 기능
VCBuild 및 MSBuild
포트 타사 라이브러리

참고 항목

새로워진 Visual Studio의 Visual C++ 기능
Visual C++ 변경 기록 2003 - 2015
비표준 동작
데이터 애플리케이션 포트