2009-03-11 2 views
2

C# 컴파일러에 사전 정의 된 상수가있어 대상 플랫폼의 버전을 감지합니까?C# 컴파일러는 버전 또는 플랫폼 상수를 설정합니까?

프로젝트 옵션에서 플랫폼을 설정할 수 있지만 .NET 2 및 .NET 3.5 용 단일 소스를 작성하는 방법은 무엇입니까?

편집 : 코드를 한 번 작성하고 #if CLR_VERSION35 과 같은 설정으로 동작을 전환 한 다음 다른 구성으로 변경하고 싶습니다.

반대의 질문 : CLR35 및 CLR20 구성을 만들면이를 기반으로 대상 플랫폼을 선택할 수 있습니까? 이 옵션은 VS2008에서 사용할 수 없으며 아직 MSBUILD에 대해 많이 알지 못합니다.

답변

5

.NET Framework 3.5는 2.0의 상위 집합이므로 모든 2.0 응용 프로그램은 수정없이 3.5에서 실행되어야합니다. 슈퍼 세트이기 때문에 앱이 2.0에서 찾으면 3.5 기능을 사용하지 말라는 의미는 아닙니다. 어쨌든 의미가 없습니다.

2.0을 타겟팅해야하고 2.0에서 필요한 것을 작성할 수 있다면 그렇게하는 것이 좋습니다. 3.5는 여전히 앱을 계속 실행합니다. 효과적으로, 가장 낮은 공통 분모를 작성하거나 설치 프로그램에 3.5 런타임 재배포 가능 항목을 포함시켜 고객이 올바른 앱 환경을 갖출 수 있도록해야합니다.

+0

에게 있다면. – Tassadaque

+0

@ Tassadaque, 나사로가 묘사 한 것과 동일합니다. (1) 가장 낮은 공통 분모에 쓰기, 또는 (2) 필요한 버전에 대한 네드 재배포 가능 항목을 포함하십시오. 다행히도, 설치 프로젝트는 재배포 가능 패키지를 쉽게 포함시킵니다. 그리고 컴파일 시간에 _ 알기를 원한다면 Chris S가 답변에서 말한 것처럼 : 조건부 컴파일 기호를 추가하여 소스 코드에서 알아야 할 사항을 알려줍니다. –

2

VS2008에서는 프로젝트 속성 (솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭)에서 대상 프레임 워크를 설정할 수 있습니다. 새 프로젝트를 만들 때 옵션이 있습니다. 새 프로젝트 창의 오른쪽 상단에 드롭 다운이 있습니다.

1

DEBUG 및 RELEASE 이외에도 내가 아는 한 멀리 있지 않습니다. 검색을 저장하고 프로젝트 속성, "빌드"탭, "조건부 컴파일 기호"내에서 내 자신을 정의합니다. this blog

있습니다 자세한 내용은 즉, 우리는 또한 .NET 4.0이있는 경우 경우 해결책이 될 것입니다 무엇 어떤 사용