답변:
프레임 워크 및 참조 대화 상자에서 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를 극복하는 것은 일반적으로 실제 문제 일뿐입니다. 두려움과 의심의 이유가 없으며 안정적입니다.
예, 관리되는 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에만 적용됩니다.