.NET과 C# 버전 히스토리 완벽 가이드
Microsoft의 주력 개발 플랫폼 .NET과 대표 언어 C#의 진화 과정을 살펴봅니다. 주요 마일스톤, 릴리스 일자, 현대 .NET 개발을 형성한 핵심 기능을 다룹니다.
- .NET Framework 버전 히스토리 개요
- C# 언어 릴리스 타임라인과 주요 개선사항
.NET Framework 버전 히스토리
첫 릴리스인 .NET Framework 1.0이 2002년 데뷔했습니다. 이후 수많은 업데이트를 거쳐 최신 지원 릴리스인 .NET Framework 4.7.1(2017년 10월)에 이르렀습니다. 각 버전은 중요한 개선을 도입했으며, 3.5에서 Entity Framework가 도입되어 데이터 액세스 패턴을 혁신했습니다.
| 버전 | CLR 버전 | 릴리스 날짜 |
| 1.0 | 1.0 | 2002‑02‑13 |
| 1.1 | 1.1 | 2003‑04‑24 |
| 2.0 | 2.0 | 2005‑11‑07 |
| 3.0 | 2.0 | 2006‑11‑06 |
| 3.5 | 2.0 | 2007‑11‑19 |
| 4.0 | 4 | 2010‑04‑12 |
| 4.5 | 4 | 2012‑08‑15 |
| 4.5.1 | 4 | 2013‑10‑17 |
| 4.5.2 | 4 | 2014‑05‑05 |
| 4.6 | 4 | 2015‑07‑20 |
| 4.6.1 | 4 | 2015‑11‑17 |
| 4.6.2 | 4 | 2016‑08‑02 |
| 4.7 | 4 | 2017‑04‑05 |
| 4.7.1 | 4 | 2017‑10‑17 |
.NET Framework는 모든 지원되는 Windows 운영체제에서 호환성을 보장하며 Windows 중심 개발의 초석으로 남아 있습니다.
C# 버전 히스토리
| 버전 | .NET Framework | Visual Studio | 주요 기능 |
| C# 1.0 |
1.0/1.1 |
Visual Studio .NET 2002 |
최초 언어 릴리스 |
| C# 2.0 |
2.0 |
Visual Studio 2005 |
- 제네릭(Generics)
- 부분 타입(Partial types)
- 익명 메서드(Anonymous methods)
- 널러블 타입(Nullable types)
- 반복기(Iterators)
- 공변성/반공변성(Covariance & contravariance)
|
| C# 3.0 |
3.0/3.5 |
Visual Studio 2008 |
- 자동 구현 속성(Auto‑implemented properties)
- 익명 타입(Anonymous types)
- 쿼리 표현식(LINQ)
- 람다 표현식(Lambda expressions)
- 식 트리(Expression trees)
- 확장 메서드(Extension methods)
|
| C# 4.0 |
4.0 |
Visual Studio 2010 |
- 동적 바인딩(Dynamic binding)
- 명명/선택적 인수(Named & optional arguments)
- 제네릭 공변성/반공변성
- 내장 상호 운용 타입(Embedded interop types)
|
| C# 5.0 |
4.5 |
Visual Studio 2012/2013 |
- Async/await
- 호출자 정보 속성(Caller info attributes)
|
| C# 6.0 |
4.6 |
Visual Studio 2013/2015 |
- 정적 임포트(using static)
- 예외 필터(Exception filters)
- 속성 초기화(Property initializers)
- 표현식 본문 멤버(Expression‑bodied members)
- Null 전파 연산자(Null‑propagation operator)
- 문자열 보간(String interpolation)
- nameof 연산자
- 딕셔너리 초기화(Dictionary initializer)
|
| C# 7.0 |
.NET Core |
Visual Studio 2017 |
- 값 튜플(Value tuples)
- 패턴 매칭(Pattern matching)
- 로컬 함수(Local functions)
- Out 변수 선언(Out variable declarations)
- Ref 반환/지역 변수(Ref returns & locals)
- 강력한 async 기능
|
이것이 중요한 이유
.NET과 C# 릴리스의 역사적 맥락을 이해하면 개발자는 적절한 도구를 선택하고, 기능 폐기를 예측하며, 현대 언어 기능을 활용해 견고하고 고성능 애플리케이션을 구축할 수 있습니다.