문제

CLR 버전으로 조건부로 코드를 컴파일해야합니다.
예를 들어 CLR 2 (.NET 3.5 VS2008)에서만 컴파일 해야하는 코드가 있으며 CLR 4 (.NET 4 vs2010).
#IF 절 내에서 사용할 수있는 현재 CLR 버전에 대한 프리 컴파일러 지침이 있습니까?

감사.

도움이 되었습니까?

해결책

내가 아는대로.

다음과 같은 자신의 것을 사용해보십시오.

#if CLR_V2
  #if CLR_V4
    #error You can't define CLR_V2 and CLR_V4 at the same time
  #endif

  code for clr 2

#elif CLR_V4

  code for clr 4

#else
  #error Define either CLR_V2 or CLR_V4 to compile
#endif

그런 다음 Visual Studio의 프로젝트 속성 창 또는 CSC 명령 줄 인수에서 CLR_V2 및/또는 CLR_V4를 정의 할 수 있습니다.

다른 팁

CLR 버전을 확인하는 MSBuild 스크립트에 항상 무언가를 추가 한 다음 조건부로 전처리 기호를 #IF로 코드 내부에서 테스트 할 수있는 컴파일러로 전처리 기호를 정의하고 전달할 수 있습니다.

네, 있습니다 조건부 편집 지침 그들은 C 전 처리기처럼 보입니다

편집 : 그 질문을 완전히 잘못 읽었습니다 - 휴식 시간

에 따르면 여기 정답은 아니요. 그러나 우리가 사용하는 한 가지 트릭은 버전 특정 코드를 런타임에로드 된 어셈블리에 넣는 것입니다. 그런 다음 런타임에 CLR 버전을 얻을 수 있습니다. System.runtime.interopservices.runtimeenvironment.getRuntImedirectory ().

버전 특정 코드는 C#3.5 이후에서 이용할 수있는 타겟팅 기능을 사용하여 편집됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top