다음을 통해 공유


방법: 프로젝트를 여러 버전의 Visual Studio 로드 되도록 프로젝트 시스템 수정

Visual Studio 2012, 이전 버전의 Visual Studio 로드에서 사용자 지정 프로젝트 시스템에서 만든 프로젝트를 막을 수 있습니다 또는 수리, 변환, 또는 사용 되지 해야 하는 경우 최신 버전으로 자신을 확인 하 여 사용할 수 있습니다.

참고

이 컨텍스트에서 용어 복구 Visual Studio 버전에서 생성 된 또는 최신 버전에 자동으로 로드할 수 있도록 프로젝트를 수정 하는 것을 의미 합니다.변환, 또는 업그레이드, 프로젝트에 더 이상 작성 된 버전에서 로드할 수 있도록 수정 하는 수단입니다.

호환 되지 않는 것으로 프로젝트를 표시합니다.

호환 되지 않는 이전 버전의 Visual Studio 프로젝트를 표시할 수 있습니다. 만드는 예를 들어 Visual Studio 2012 사용 하는 프로젝트를 합니다.NET Framework 5 기능입니다. Visual Studio 2010 s p 1이이 프로젝트를 빌드할 수 없습니다 때문에 해당 버전 로드 하려고 시도 합니다 있도록이 Visual Studio 2010 s p 1과 호환 되지 않는 것으로 표시 하면 됩니다.

호환 되지 않는 기능을 추가 하는 구성 요소와 호환 되지 않는 프로젝트를 표시 하는 일을 담당 합니다. 구성 요소에 액세스할 수 있어야 합니다는 IVsHierarchy 인터페이스 관심 있는 프로젝트를 나타냅니다.

와 호환 되지 않는 프로젝트를 표시

  1. Visual Studio 호환 되지 않는 프로젝트를 식별 하는 경우 권한으로 호환 되지 않는 지정 된 모든 프로젝트를 표시 하는 대화 상자가 표시 됩니다. 호환 되지 않는 다른 이름으로 프로젝트를 표시 하 고 동의 하는 경우 AskForUserConsentToBreakAssetCompat ; 구성 요소를 S_OK를 반환 합니다. 그렇지 않으면, OLE_E_PROMPTSAVECANCELLED.

    경고

    가장 일반적인 시나리오는 IVsHierarchy 배열에 항목을 하나만 포함 됩니다.

  2. 경우 AskForUserConsentToBreakAssetCompat 반환 S_OK를 구성 하거나 호환성이 손상 되는 변경 내용을 적용 합니다.

중요

구현할 필요는 VSHPROPID_MinimumDesignTimeCompatVersion 호환 또는 호환 되지 않는 프로젝트를 표시 하는 속성입니다.프로젝트 파일에는 MSBuild 프로젝트 파일은 프로젝트 시스템을 사용 하는 경우를 예를 들어, 추가 <MinimumVisualStudioVersion> 속성에서 해당 하는 값을 빌드 VSHPROPID_MinimumDesignTimeCompatVersion 속성 값입니다.

호환 되지 않는 검색 여부는 프로젝트 수

Visual Studio 현재 버전과 호환 되지 않는 프로젝트에서 로드 되어 있어야 합니다. 또한, 호환 되지 않는 프로젝트를 업그레이드 하거나 복구할 수 없습니다. 따라서 프로젝트의 호환성을 위해 두 번 선택 해야: 간주 되 면 첫 번째를 업그레이드 하거나 복구 및 초 전에 로드 됩니다.

프로젝트 호환성 문제를 감지할 수 있으려면 반드시 구현 해야는 UpgradeProject_CheckOnlyCreateProject 방법입니다. 프로젝트 호환 되지 않는 경우 UpgradeProject_CheckOnly 성공 코드를 반환 합니다 VS_S_INCOMPATIBLEPROJECT 및 CreateProject 오류 코드를 반환 합니다 VS_E_INCOMPATIBLEPROJECT.

참고

호환성 검사에서 결과 캐시할 수 있습니다의 UpgradeProject_CheckOnly 하 여 후속 호출에 의해 사용할 수 있도록 하는 방법을 CreateProject.

예를 들어, 경우는 UpgradeProject_CheckOnly 및 CreateProject 메서드 Visual Studio 2010 s p 1 프로젝트 시스템에 대해 작성 된 프로젝트 파일을 검토 하 고 한다는 것을 알는 <MinimumVisualStudioVersion> 빌드 속성 "11.0", Visual Studio 2010 s p 1의 프로젝트 로드 됩니다. 또한, 솔루션 탐색기 프로젝트 "호환" 되지 않고 로드할 수 없습니다 것을 나타냅니다.

업그레이드 또는 복구 프로젝트

Visual Studio 2010 s p 1에는 이전 버전의 Visual Studio 만든 대부분의 프로젝트 변환할 수 있습니다. 뿐만 아니라 수 있습니다 Visual Studio 2012 이 작업을 특정 한 종류는 두 버전 중 하나를 로드할 수 있도록 이전 버전에서 만든 프로젝트를 수정할 수도 있습니다.

프로젝트를 로드 하기 전에 Visual Studio 호출 하 여 UpgradeProject_CheckOnly 메서드는 프로젝트를 업그레이드할 수 있는지 여부를 확인 합니다. 프로젝트를 업그레이드할 경우는 UpgradeProject_CheckOnly 메서드를 나중에 호출 하 게 하는 플래그를 설정에서 UpgradeProject 프로젝트를 업그레이드 하는 방법입니다. 호환 되지 않는 프로젝트를 업그레이드할 수 없습니다 때문에 UpgradeProject_CheckOnly 프로젝트 호환성에 대 한 이전 섹션에서 설명한 대로 먼저 확인 해야 합니다.

Visual Studio 2012을 구현 하 여 UpgradeProject_CheckOnly 로드 되기 전에 프로젝트를 복구할 수 있는지 여부를 결정 합니다. 프로젝트를 복구할 경우 UpgradeProject_CheckOnly 성공 코드를 반환 합니다 VS_S_PROJECTREPAIRONLYUPGRADEREQUIRED. 가능한 업그레이드 요구 사항에서 열거 된 VSPUVF_REPAIRFLAGS, 하며 다음 사항을 포함 합니다.

  1. SPUVF_PROJECT_NOREPAIR: 없음 수정이 필요합니다.

  2. VSPUVF_PROJECT_SAFEREPAIR: 프로젝트를 Visual Studio 2010와 호환 되는 제품의 이전 버전에 있을 수 있는 문제 발생 하지 않고 있습니다.

  3. VSPUVF_PROJECT_UNSAFEREPAIR: 프로젝트 호환 됩니다 Visual Studio 2010 아니라 제품의 이전 버전과 발생 한 문제 몇 가지 위험. 예를 들어, 프로젝트 간에 다른 SDK 버전에 종속 된 경우 호환 되지 않을 Visual Studio 2012 및 Visual Studio 2010.

  4. VSPUVF_PROJECT_ONEWAYUPGRADE: 프로젝트를 Visual Studio 2010와 호환 되지 않는 수 있습니다.

  5. VSPUVF_PROJECT_INCOMPATIBLE: 나타냅니다 Visual Studio 2012 이 프로젝트를 지원 하지 않습니다.

  6. VSPUVF_PROJECT_DEPRECATED: 더 이상이 프로젝트 지원 됨을 나타냅니다.

프로젝트 시스템 flavored 되는 경우 (예를 들어, Visual Basic 또는 C# 프로젝트 시스템 웹, 사무실 (VSTO), Silverlight 및 기타 프로젝트 형식 위에 내장 했습니다), 이러한 프로젝트 맛 함수를 구현할 수 있습니다 UpgradeProjectFlavor_CheckOnly 에서 IVsProjectFlavorUpgradeViaFactory2 인터페이스입니다. 작업에서이 함수를 확인 하는 IVsProjectUpgradeViaFactory4. UpgradeProject_CheckOnly 앞에서 언급 한 구현을 호출 해야 합니다. (이 Visual Basic 또는 C# 기본 프로젝트 시스템에서 이미 구현 된 note) 이 함수의 효과 프로젝트 맛을 또한 기본 프로젝트 시스템을 결정 했습니다 무엇 이외에 프로젝트의 업그레이드 요구 사항을 결정할 수 있습니다. 두 가지 요구 사항 중 가장 심각한 호환성 대화 상자를 보여 줍니다.

관리 되는 구현에 대 한 이러한 두 가지 인터페이스를 사용할 수 있습니다에서 [Microsoft.VisualStudio.Shell.Interop.11.0.dll] 어셈블리입니다.

솔루션에서 프로젝트를 업그레이드 하거나 변환, Visual Studio 2012 를 함께 사용 하는 호환 되지 않는 프로젝트 대화 상자에서 나열 합니다. 제안 된 변경 작업을 수행 하도록 선택 하면 해당 UpgradeProject 메서드를 호출 하 고 업그레이드 및 수리 수 있습니다. UpgradeProject 메서드를 수 변경 프로젝트 이전 버전의 Visual Studio 로드에서 수 없으며 프로젝트와 호환 되지 않는 경우 표시 여부를 결정 합니다. 예를 들어, Visual Studio 2010 s p 1에서 프로젝트를 만들 수 있습니다 및 다음에 해당 프로젝트를 열 Visual Studio 2012. 업그레이드 또는 복구 가능한 경우 대화 상자는 변경할 수 있는 권한을 요청 하려면 나타납니다. 동의 하는 경우 프로젝트를 수정 하 고 로드 합니다.솔루션을 닫고 Visual Studio 2010 s p 1을 다시 하는 경우 업그레이드 된 프로젝트 호환 되지 않는 것으로 간주 되며 복구 된 프로젝트를 제대로 로드.