이전 C++ 버전의 Visual Studio에서 프로젝트 업그레이드Upgrade C++ projects from earlier versions of Visual Studio

Visual Studio 2008 이전 버전에서 만든 프로젝트를 업그레이드 하려면 먼저 Visual Studio 2010를 사용 하 여 프로젝트를 VCBuild 형식 (.vcproj)에서 MSBuild 형식 (.vcxproj)으로 변환 해야 합니다.To upgrade a project created in Visual Studio 2008 or earlier, you must first use Visual Studio 2010 to convert the project from the VCBuild format (.vcproj) to the MSBuild format (.vcxproj). 자세한 내용은 Visual Studio 2008에 대 한 지침을 참조 하세요.For more information, see Instructions for Visual Studio 2008.

Visual Studio 2010 이상에서 만든 프로젝트를 업그레이드 하려면 최신 버전의 Visual Studio에서 프로젝트를 열기만 하면 됩니다.To upgrade a project created in Visual Studio 2010 or later, simply open the project in the latest version of Visual Studio. Visual Studio에서는 프로젝트를 현재 스키마로 업그레이드 합니다.Visual Studio offers to upgrade the project to the current schema. 아니요를 선택 하 고 컴퓨터에 이전 버전의 visual studio가 있는 경우 최신 버전의 visual studio에서 프로젝트를 사용 하 여 계속 해 서 이전 도구 집합을 대상으로 지정할 수 있습니다.If you choose No, and you have the older version of Visual Studio on your computer, you can work in the project in a newer version of Visual Studio and continue to target the older toolset. 예를 들어 Windows XP에서 프로젝트를 계속 실행 해야 하는 경우 Visual Studio 2019로 업그레이드할 수 있지만 v141 또는 이전 버전으로 도구 집합을 지정 해야 합니다.For example, if your project must continue to run on Windows XP, you can upgrade it to Visual Studio 2019, but you have to specify the toolset as v141 or earlier. 자세한 내용은 Visual Studio의 네이티브 멀티 타기팅을 사용하여 이전 프로젝트 빌드를 참조하세요.For more information, see Use native multi-targeting in Visual Studio to build old projects. 를 선택 하면 프로젝트가 변환 되 고 이전 버전으로 다시 변환할 수 없습니다.If you choose Yes, then the project will be converted and cannot be converted back to the earlier version. 따라서 업그레이드 시나리오에서는 기존 프로젝트 및 솔루션 파일의 복사본을 만드는 것이 좋습니다.Therefore, in upgrade scenarios, it is good practice to make a copy of the existing project and solution files.

업그레이드 보고서Upgrade reports

프로젝트를 업그레이드하면 업그레이드 보고서가 표시되며, UpgradeLog.htm으로 프로젝트 폴더에 저장됩니다.When you upgrade a project, you get an upgrade report, which is also saved in your project folder as UpgradeLog.htm. 업그레이드 보고서에는 발생 한 문제에 대 한 요약 및 다음을 비롯 한 변경 내용에 대 한 정보가 표시 됩니다.The upgrade report shows a summary of what problems were encountered and some information about changes that were made, including:

  1. 프로젝트 속성Project properties

  2. 포함 파일Include files

  3. 컴파일러 규칙 향상 이나 표준의 변경으로 인해 더 이상 컴파일되지 않는 코드Code that no longer compiles cleanly due to compiler conformance improvements or changes in the standard

  4. 더 이상 사용할 수 없는 Visual Studio 또는 Windows 기능 또는 Visual Studio 기본 설치에 포함되지 않거나 제품에서 제거된 헤더 파일을 사용하는 코드Code that relies on Visual Studio or Windows features that are no longer available or header files that either aren't included in a default installation of Visual Studio, or were removed from the product

  5. 이름이 바뀐 API, 변경된 함수 서명 또는 사용되지 않는 함수와 같은 API 변경 내용으로 인해 더 이상 컴파일되지 않는 코드Code that no longer compiles due to changes in APIs such as renamed APIs, changed function signatures, or deprecated functions

  6. 진단 변경 내용으로 인해 더 이상 컴파일되지 않는 코드입니다 (예: 오류가 되는 경고).Code that no longer compiles due to changes in diagnostics, such as a warning becoming an error

  7. 특히 /NODEFAULTLIB가 사용되는 경우 변경된 라이브러리로 인한 링커 오류Linker errors due to libraries that were changed, especially when /NODEFAULTLIB is used.

  8. 동작 변경 내용으로 인한 런타임 오류 또는 예기치 않은 결과Runtime errors or unexpected results due to behavior changes

  9. 도구에 도입 된 오류입니다.Errors that were introduced in the tools. 문제가 발생하는 경우 일반적인 지원 채널을 통해 또는 Visual Studio C++ 개발자 커뮤니티 페이지를 사용하여 Visual C++ 팀에 보고합니다.If you encounter an issue, report it to the Visual C++ team through your normal support channels or by using the Visual Studio C++ Developer Community page.

일부 업그레이드 된 프로젝트 및 솔루션은 수정 없이 성공적으로 빌드할 수 있습니다.Some upgraded projects and solutions can be built successfully without modification. 그러나 대부분의 프로젝트에는 소스 코드 뿐만 아니라 프로젝트 설정에 대 한 변경 내용이 필요할 수 있습니다.However, most projects will likely require changes to project settings as well as source code. 이러한 문제를 해결 하는 방법에는 올바른 방법이 없지만 일종의 단계적 접근 방식을 사용 하는 것이 좋습니다.There is no single correct way to go about fixing these, but some kind of phased approach is recommended. 시작 하기 전에 여러 종류의 일반적인 오류에 대 한 자세한 내용은 잠재적인 업그레이드 문제 개요 를 검토 합니다.Before starting, review Overview of potential upgrade issues for more information on many kinds of common errors.

  1. 플랫폼 도구 집합, C++ 언어 표준 및 Windows SDK 버전 (해당 하는 경우)을 원하는 버전으로 설정 합니다.Set the Platform Toolset, C++ Language Standard, and Windows SDK version (if applicable) to the desired versions. (Project > 속성 > 구성 속성 > 일반)(Project > Properties > Configuration Properties > General)
  2. 오류가 많이 발생 하는 경우 허용 옵션 (프로젝트 > 속성 > 구성 속성 > C/C++ > 언어) 및 코드 분석을 해제 합니다. (Project > 속성 > 구성 속성 > 코드 분석) 옵션은 일시적으로 오류 수를 줄입니다.If you have a lot of errors, turn off the permissive- option (Project > Properties > Configuration Properties > C/C++ > Language) and code analysis (Project > Properties > Configuration Properties > Code Analysis) option temporarily to reduce the error count.
  3. 모든 종속성이 있고 포함 경로 또는 라이브러리 위치가 올바른지 확인 하십시오.Ensure that all dependencies are present and that the include paths or library locations are correct. (프로젝트 > 속성 > 구성 속성 > VC + + 디렉터리)(Project > Properties > Configuration Properties > VC++ Directories)
  4. 더 이상 존재 하지 않는 Api에 대 한 참조로 인해 발생 하는 오류를 식별 하 고 해결 합니다.Identify and fix errors due to references to APIs that no longer exist.
  5. 컴파일을 방해 하는 나머지 오류를 수정 합니다.Fix any remaining errors that prevent compilation. 일반적인 오류에 대 한 수정에 대 한 잠재적인 업그레이드 문제 개요 를 참조 하세요.Refer to Overview of potential upgrade issues for fixes for common errors.
  6. MSVC에서 이전에 컴파일된 호환 되지 않는 코드로 인해 표시 되는 새 오류를 다시 사용 하도록 설정 하 고 수정 합니다.Turn permissive- back on and fix any new errors that appear due to non-conformant code that previously compiled in MSVC.
  7. 코드 분석을 사용 하 여 더 이상 허용 되지 않는 것으로 간주 되는 잠재적 문제나 오래 된 코딩 패턴을 식별 합니다.Turn on code analysis to identify potential problems or outdated coding patterns that are no longer considered acceptable. 코드 분석에서 많은 오류를 표시 하는 경우 가장 중요 한 경고에 초점을 맞추기 위해 일부 경고를 해제할 수 있습니다.If code analysis flags many errors, you can turn off some of the warnings to focus on the most important ones first. IDE는 일부 종류의 문제를 신속 하 게 해결 하는 데 도움이 될 수 있습니다.The IDE can help with Quick Fixes for some kinds of issues.
  8. 예를 들어, 사용자 지정 데이터 구조 및 알고리즘을 C++ 표준 라이브러리나 오픈 소스 라이브러리의 기능을 대체 하 여 코드를 현대화 하는 다른 기회를 고려 합니다.Consider other opportunities for modernizing the code, for example by replacing custom data structures and algorithms with those from the C++ standard library or the Boost open-source library. 표준 기능을 사용 하면 다른 사용자가 코드를 쉽게 유지 관리할 수 있으며, 표준 위원회 및 광범위 C++ 한 커뮤니티에서 많은 전문가가 코드를 잘 테스트 하 고 검토 하는 것도 강력 합니다.By using standard features, you make it easier for others to maintain the code and also have a strong confidence that the code has been well-tested and reviewed by many experts on the standards committee and the broader C++ community.

오류를 수정 하려면 Stack Overflow 또는 C++ 개발자 커뮤니티에서 질문을 검색 하거나 게시 해 보세요.For hard-to-fix errors, try searching or posting a question on Stack Overflow or C++ Developer Community.

이 섹션의 내용In this section

잠재적인 업그레이드 문제 개요Overview of potential upgrade issues
코드를 유니버설 CRT로 업그레이드Upgrade your code to the Universal CRT
WINVER 및 _WIN32_WINNT 업데이트Update WINVER and _WIN32_WINNT
라이브러리 내부 요소에 대한 종속성 해결Fix your dependencies on library internals
부동 소수점 마이그레이션 문제Floating-point migration issues
C++Visual Studio 2019에서 사용 되지 않는 기능C++ features deprecated in Visual Studio 2019
VCBuild 및 MSBuildVCBuild vs. MSBuild
타사 라이브러리 포트Port 3rd-party libraries

참조See also

Visual Studio의 Visual C++에 대한 새로운 기능What's New for Visual C++ in Visual Studio
Visual C++ 변경 기록 2003 - 2015Visual C++ change history 2003 - 2015
비표준 동작Nonstandard Behavior
포트 데이터 응용 프로그램Port data applications