vs2010을 사용하여 C ++ / CLI 프로젝트를 4.0 이외의 다른 프레임 워크로 변경


153

프로젝트를 Visual Studio 2010 프로젝트 형식으로 업그레이드 한 후 C ++ / CLI 프로젝트는 .net framework 4.0을 대상으로합니다.

C # 프로젝트에서 다른 버전으로 프레임 워크 버전을 쉽게 전환 할 수 있지만 C ++ / CLI 프로젝트에서이 작업을 수행하는 방법에 대한 단서가 없습니다. 프로젝트 속성 페이지에서 이에 대한 설정이 표시되지 않습니다.

답변:


190

프레임 워크 및 참조 대화 상자에서 F1을 누르면 다음과 같이 표시됩니다.

새 프로젝트의 경우 기본적으로 대상 프레임 워크는 .NET Framework 4로 설정됩니다. IDE는 대상 프레임 워크 수정을 지원하지 않지만 수동으로 변경할 수 있습니다. 프로젝트 파일 (.vcxproj)에서 기본 대상 프레임 워크는 v4.0 특성 요소로 표시됩니다. 대상 프레임 워크를 변경하려면 프로젝트를 언로드하고 텍스트 편집기를 사용하여 프로젝트 파일을 연 다음 특성 요소의 값을 v4.0에서 서버에 설치된 다른 버전으로 변경하십시오. 예를 들어 .NET Framework v3.5를 나타내는 v3.5를 지정하면 Visual Studio 2008 SP1을 설치해야합니다 . 파일을 저장하고 닫은 후 프로젝트를 다시로드하고 대상 프레임 워크가 속성 페이지에 표시되는지 확인하십시오. *

변환 된 프로젝트에서는 그다지 정확하지 않으므로 <TargetFrameworkVersion>요소를 직접 추가해야합니다 . "Globals"라는 레이블이 지정된 PropertyGroup에 넣으십시오.

  <PropertyGroup Label="Globals">
    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
    <others...>
  </PropertyGroup>

일반 속성 페이지에서 플랫폼 도구 세트 설정을 얻은 VS의 첫 번째 버전 인 VS2012 이상을 사용하면 스토리가 다릅니다. 그런 다음 3.5를 대상으로하는 적절한 빌드를 얻으려면 "v90"을 선택해야합니다. 그러나 서투른 경우, 해당 선택을 사용하려면 머신에 모든 중간 버전의 VS가 설치되어 있어야합니다.

VS2008을 설치해야하는 이유는 설명이 필요합니다. 핵심 문제는 C 런타임 라이브러리 (msvcrt100.dll 이상)에 관리 코드 실행을 지원하는 .NET 코드가 포함되어 있다는 것입니다. 중요한 세부 사항은 C ++ / CLI 코드를 사용하는 프로그램에서 CRT가 올바르게 초기화되도록하는 모듈 이니셜 라이저입니다. 이 코드는 항상 .NET 4를 대상으로하며 msvcrt100.dll (및 이상)에 하드-베이크되므로 v4.0.30319 런타임에 대한 의존성이 항상 높습니다. 이전 C 런타임 msvcrt90.dll을 사용할 때 순수한 v2.0.50727 종속 만 가질 수 있습니다. VS2008의 컴파일러의 #include 파일을 사용할 때 msvcrt90.dll 종속이 있는지 확인할 수 있습니다.

.NET 4로 곧 전환해야한다는 것은 매우 어려운 사실입니다. 그렇지 않으면 이와 같은 빌드 문제로 어려움을 겪을 것입니다. .NET 4는 상상할 수있는 모든 대상에서 무료로 광범위하게 사용할 수 있습니다. 더 높은 런타임 버전으로 이동하는 것과 관련된 FUD를 극복하는 것은 일반적으로 실제 문제 일뿐입니다. 두려움과 의심의 이유가 없으며 안정적입니다.


8
이제이 단계를 수행했지만 "MSB8009 : .NET Framework 2.0 / 3.0 / 3.5가 v90 플랫폼 도구 세트를 대상으로합니다. Visual Studio 2008이 컴퓨터에 설치되어 있는지 확인하십시오"라는 오류가 발생합니다. VS2008이 없습니다.
codymanix

8
내 대답에서 인용 : "Visual Studio 2008 SP1을 설치해야합니다." 필요한 빌드 도구가 없습니다.
Hans Passant

2
.suo 파일을 삭제하고 솔루션을 다시 열어야 할 수도 있습니다. 내 경우처럼.
alehro

Visual Studio 2008 express (무료)를 설치하면이 작업을 간단하게 수행 할 수 있습니다. 플랫폼 툴셋을 v90으로 변경했을 때 실제로 많은 오류가 발생했습니다. v100으로 돌아 가면 모두 해결되었습니다!
simon.d

4
Visual Studio 2010을 사용하여 혼합 된 C ++ / CLI 및 C # 프로젝트를 사용하는 .NET Framework 4.0 프로그램을 만들 때 .NET Framework 4.5 (또는 .NET Framework 4.5와 함께 제공되는 Visual Studio 2013)를 설치하면 C ++ / CLI 프로젝트가 생성됩니다. VS 2010은 이전 4.0 대신 4.5에 대해 빌드되었습니다. C ++ / CLI- 프로젝트를 참조하는 동일한 솔루션에서 4.0에 대해 빌드 된 C #-프로젝트가 있으면 중단됩니다. C ++ / CLI- 프로젝트의 vcxproj 파일에 <TargetFrameworkVersion> v4.0 </ TargetFrameworkVersion>을 삽입하면이 문제가 해결됩니다. \ o /
Daniel Albuschat

18

예, 관리되는 C ++ 프로젝트의 경우에도 대상을 변경할 수 있습니다.

C ++ / CLI 용 대상 .NET Framework 변경 (VS 2010) C ++ / CLI 프로젝트 용 .NET Framework 버전을 변경하려면 (VS 2010)

솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 프로젝트 언로드를 클릭하십시오. 솔루션 탐색기에서 언로드 된 프로젝트를 마우스 오른쪽 단추로 클릭하고 편집을 선택하십시오 <projectname>.vcxproj. 프로젝트에서 XML 파일 찾기 노드 <PropertyGroup Label="Globals">해당 노드에서 노드를 찾을 <TargetFrameworkVersion>수 없으면 추가하십시오. 노드의 내부 텍스트가 정의됩니다. 대상 프레임 워크. v2.0, v3.0, v3.5 또는 v4.0 일 수 있습니다. vcxproj 파일 저장 및 닫기 솔루션 탐색기에서로드되지 않은 프로젝트를 마우스 오른쪽 단추로 클릭하고 프로젝트 다시로드를 클릭하십시오. <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>

참고 :이 단계는 새로운 형식의 C ++ 프로젝트 파일을 사용하므로 Visual Studio 2010에만 적용됩니다.

MSDN의 소스 : 방법 : 대상 .NET Framework 변경


5

익명 사용자가 :

(새 사용자로 편집하면 응답 할 수없는 사람은 다음을 제출하십시오.) 툴셋을 v100으로 변경하면 VS2010이 .NET 4.0을 대상으로합니다. 프로젝트 속성. VS2010은 v100 툴셋으로 .NET 3.5를 대상으로 할 수는 있지만 현재로서는 불가능하기 때문에 실제로 경고를 표시해야합니다.


다중 타겟팅을 사용하면 V2.0, 3.0, 3.5 및 4.0 만 타겟팅 할 수 있기 때문입니다. .Net의 1.x 버전은 이런 식으로 타겟팅 할 수 없습니다.
Jeroen

0

VS 2010에서 도구 세트가 설치된 경우 프로젝트 특성-> 구성 특성-> 일반으로 이동하여 플랫폼 도구 세트를 v90에서 v100으로 변경하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.