CLR 버전에 대한 AC# precompiler 정의가 있습니까?
문제
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 이후에서 이용할 수있는 타겟팅 기능을 사용하여 편집됩니다.
제휴하지 않습니다 StackOverflow