2011-04-11 2 views
3

[Obsolete] 속성은 더 나은 구현에 찬성 사용되지 않습니다 클래스를 표시하기위한 매우 편리하지만 프로젝트가 목표로하는 것이 닷넷 버전을 구분하지 않습니다. 예를 들어버전에 민감한 ObsoleteAttribute

, 나는 4.0 전에 닷넷 버전에 대한 홈 압연 ThreadSafeDictionary 클래스를 사용하고 말한다. .Net 4.0이 나왔을 때 ConcurrentDictionary이라는 새로운 클래스가 포함되었습니다. 나는이 프로젝트는 닷넷 4.0 컴파일되는 경우 [Obsolete]하지만 ThreadSafeDictionary을 표시 할 수 있도록하고 싶습니다. 주식 ObsoleteAttribute이 프레임 워크 버전으로 컴파일러의 경고를 제어하는 ​​것을 지원하지 않는 것으로 보입니다.

이렇게 할 방법이 있습니까?

+2

학자 어쩌면,하지만 - 당신은 2.0 컴파일하는 경우, 정말 아직도 쓸모입니다! (그들은 더 적절한 클래스에 액세스하기 위해 업그레이드해야합니다.) –

+1

모든 프로그램을 항상 최신 프레임 워크로 업그레이드 할 수는 없습니다. 예를 들어, 우리는 최신 버전의 프레임 워크를 사용하기 위해 인증되기 전에 광범위한 QA를 거쳐야하는 미들웨어 플랫폼을 보유하고 있습니다. 그 동안 우리는 4.0에서 배포 할 새로운 프로젝트/브랜치를 개발하면서 .Net 3.5에서 배포 할 수 있어야합니다. –

+0

Lawrence : 그렇다고해서 더 이상 쓸모가 없다는 의미는 아닙니다. 우리가 구식 버전을 사용하도록 제한되어있는 경우가 종종 있습니다. 저는 ATG 전자 상거래 프레임 워크와 함께 일하고 있으며, Java 1.5를 실행 한 후 1 년이 넘게 Java 1.6에서 실행되도록 인증되었습니다. 미친 시간. –

답변

0

나는 당신이 당신의 사용자 지정 특성을 출시 한 다음 속성을 검색 반사를 통해 컴파일 된 코드를 검사 후 빌드 프로세스를 만들 수있을 것 같아요. 방법이 모든 버전에서 사용되지 않는의 사용되지 않는 경우

+0

사용자 지정 FxCop 규칙을 사용하고있을 가능성이 있음 – CodesInChaos

관련 문제