다양한 이유로 .NET Framework 2.0 또는 3.5 또는 .NET Compact Framework와 호환되는 코드를 작성하는 것이 바람직하지만 새로운 .NET 프레임 워크에는 수많은 "작은"기능이있는 것이 문제입니다. 이전 프레임 워크 나 Compact Framework에서는 사용할 수 없습니다.새로운 .NET Framework 기능을 백 포트하기위한 "Compatibility Pack"은 무엇입니까?
예를 들어, 확장 메서드가 실제로 유용하다는 것을 알았지 만 컴파일러는 System.Runtime.CompilerServices.ExtensionAttribute
에 의존합니다. 이 특성을 직접 정의한 다음 .NET Framework 2.0 (C# 3.0 이상)에서 확장 메서드를 사용할 수 있습니다. 마찬가지로 Tuple<T1,T2>
및 Lazy<T>
과 같은 작은 .NET 4 유형을 수동으로 정의하는 것도 그리 어렵지 않습니다. 그런데 .NET 2.0에서 LINQ를 사용하려면 LinqBridge을 사용할 수 있습니다.
여러분이 작성한 다른 어셈블리에서 사용할 수 있도록 ExtensionAttribute
을 공개한다고 가정합니다. 처음에는 괜찮 았지만 같은 생각을 가진 타사 라이브러리를 사용하려면 어떻게해야합니까? 해당 라이브러리에 대한 참조를 추가하면 이름 충돌이 발생합니다. 죄송합니다.
일부 새로운 라이브러리는 호환성 팩이나 LinqBridge를 사용하여 해결할 수있는 사소한 종속성 만 있지만 .NET 4.0 또는 3.5에서만 사용할 수 있습니다.
작은 크기의 DLL에 이러한 작은 기능을 정의한 이전 .NET 버전의 경우 "호환성 팩"이 있으면 좋겠지 만 모든 크기의 프로젝트를 포함하여 정당화 할 수 있습니다. 그런 것이 있습니까?
업데이트 : 침묵으로 판단 할 때 나는 그런 것이 없다고 생각합니다. 관심이 있다면 직접 OSS 라이브러리를 만들 수도 있습니다. 그래서 내 새로운 질문은 무엇입니까 작은 (WCF/WPF 같은 괴물에 반대). NET 2, .NET 3.5, .NETCF 또는 Silverlight 용으로 쓰고 싶다면 .NET 4의 기능은 무엇입니까? 나는 ... 목록을 시작합니다
ExtensionAttribute
(하지 .NET 2) (하지 .NET 2)Func<...>
및Action<...>
대표- LINQ - 투 - 객체 (안한다. NET 2)
Tuple<...>
(되지 .NET 3.5)Lazy<T>
및Lazy<T,TMetadata>
(되지 .NET 3.5)하지 .NET 2- 식 트리 (에 불완전 .NET 3.5) 01
- Generics Variance (.NET 2에서는 존재하지만 C# 3 및 VB 9에서는 액세스 할 수 없음)
Reflection.Emit
(.NETCF에서 누락; 작은 기능은 아니지만 많이보고 싶습니다.)
Theraot 's Libraries를 사용하여 .Net 2.0 용 [dotNetLiquid] (http://dotliquidmarkup.org/)를 컴파일 할 수 있었으며 모든 유닛 테스트가 성공적으로 통과했습니다 (물론 하나만 제외). .net 4). [LinqBridge] (http://www.albahari.com/nutshell/linqbridge.aspx)는 식을 지원하지 않으므로 충분하지 않았습니다. – anikiforov