C#은 기계어로 직접 컴파일되지 않습니다. IL(중간 언어) — 플랫폼 독립적인 바이트코드 — 로 컴파일되고, CLR이 이를 실행하며, JIT(Just-In-Time) 컴파일을 사용해 런타임에 IL을 네이티브 기계어로 변환합니다. AOT(Ahead-Of-Time)는 빌드 타임에 네이티브 코드로 컴파일하는 대안입니다.
실행 파이프라인
C# 소스(.cs)
│ C# 컴파일러(roslyn)
▼
IL 바이트코드(.dll/.exe 어셈블리 안) ← 플랫폼 독립적 중간 코드
│ CLR이 로드; JIT가 런타임에 IL → 네이티브 코드로 컴파일(메서드별, 호출 시)
▼
네이티브 기계어 → CPU에서 실행
