2008-09-17 3 views

답변

1

이와 같이하려면 프리 프로세서 명령과 조건부 컴파일 기호를 사용해야합니다. 이 방법보다는 그 일을 위해

#if NET11 
// .NET 1.1 code 
#elif NET20 
// .NET 2.0 code 
#endif 

이유 :

는 는 나는 명확하게 목표로 .NET의 버전을 나타내는 상징을 사용

는 다음과 같이 관련 코드를 래핑 (NET11 및 NET20 말) 간단한 if/else는 누군가가 심볼을 정의하는 것을 잊어 버린 경우를 대비해 추가 보호 계층입니다.

그런데, 당신은 정말로 이것을 원하고 필요로하는 이유의 핵심에 이르기까지 드릴 다운해야합니다.

0

두 코드 기반을 유지해야하는 이유에 대해 묻고 싶습니다. 그 중 하나가 있다면 그 중 하나를 선택하고 함께 갈 것입니다.

변경 횟수 및 변경 유형과 동기화 된 두 개의 코드베이스를 유지하려는 시도는 매우 복잡 할 수 있으며 두 버전을 빌드하는 빌드 프로세스는 매우 복잡 할 수 있습니다.

+0

요점은 대상 플랫폼 중 하나를 위해 빌드되는 것을 지원하는 하나의 코드 기반을 갖는 것입니다. – minty

2

여기에는 다양한 옵션이 있습니다. #if pragma를 사용하지만 별도의 버전으로 별도의 어셈블리를 사용하여 작업 할 수도 있습니다.

최소한 버전 별 코드를 별도의 부분 클래스 파일에 보관하고 컴파일 할 때 올바른 버전을 사용하는 것이 이상적입니다. 시간을 거슬러 올라갈 수 있다면 이것을 강요 할 것이고 코드베이스는 #if pragma를 많이 가지고 있으며 때로는 관리하기가 어려울 수 있습니다. #if pragma 전체에서 최악의 부분은 Visual Studio가 현재 정의로 컴파일하지 않을 항목을 무시하기 때문에 변경 사항을 확인하는 것이 매우 쉽습니다.

NUnit은 1.1과 2.0을 모두 지원하므로 테스트 프레임 워크에 적합합니다. NAnt 같은 것을 사용하여 별도의 1.1 및 2.0 빌드를 만든 다음 NUnit 테스트를 자동으로 실행하는 것은 그리 어렵지 않습니다.

0

우리는이 문제가 있었고 우리는 .NET v1.1 및 v2.0 용 인터페이스 및 유틸리티 코드의 단일 세트를 구현 한 "호환성 레이어"로 끝났습니다.

그러면 설치 관리자가 올바른 버전의 올바른 코드를 정의합니다. NSIS (무료!)을 사용했으며 .NET 버전을 결정하기 위해 호출 할 수있는 함수가 있습니다.

관련 문제