.NET 네이티브로 앱 컴파일
.NET 네이티브는 UWP 앱을 빌드하고 배포하기 위한 미리 컴파일 기술입니다. .NET 네이티브는 Visual Studio 2015 이상 버전에 포함되어 있습니다. 관리 코드(C # 또는 Visual Basic)로 작성된 UWP 앱의 릴리스 버전을 네이티브 코드로 자동 컴파일합니다.
일반적으로 .NET 앱은 IL(중간 언어)로 컴파일됩니다. 런타임에 JIT(Just-In-Time) 컴파일러가 IL을 네이티브 코드로 변환합니다. 반면, .NET 네이티브는 UWP 앱을 네이티브 코드로 직접 컴파일합니다. 이러한 방식이 개발자에게 의미하는 바는 다음과 같습니다.
앱은 네이티브 코드의 성능을 제공합니다. 일반적으로 성능은 먼저 IL로 컴파일된 다음, JIT 컴파일러에 의해 네이티브 코드로 컴파일된 코드보다 우수합니다.
C# 또는 Visual Basic에서 프로그래밍을 계속할 수 있습니다.
클래스 라이브러리, 자동 메모리 관리 및 가비지 수집, 예외 처리 등 .NET Framework에서 제공하는 리소스를 계속해서 활용할 수 있습니다.
앱 사용자에게 .NET 네이티브는 다음과 같은 이점을 제공합니다.
대부분의 앱과 시나리오에서 더 빠른 실행 시간.
대부분의 앱과 시나리오에서 더 빠른 시작 시간.
낮은 배포 및 업데이트 비용.
최적화된 앱 메모리 사용.
그러나 .NET 네이티브에는 네이티브 코드에 대한 컴파일 이상의 것이 포함됩니다. .NET Framework 앱 빌드 및 실행 방식도 바뀝니다. 특히 다음 사항에 주의하십시오.
미리 컴파일하는 동안 .NET Framework의 필수 부분이 앱에 정적으로 연결됩니다. 따라서 앱이 .NET Framework의 앱 로컬 라이브러리를 사용하여 실행될 수 있으며 컴파일러가 전역 분석을 수행하여 성능을 개선할 수 있습니다. 따라서 .NET Framework를 업데이트한 후에도 앱이 지속적으로 빠르게 시작됩니다.
.NET 네이티브 런타임은 정적 사전 컴파일에 최적화되어 있으며 대부분의 경우 우수한 성능을 제공합니다. 그와 동시에 개발자의 생산성을 높여 주는 핵심 리플렉션 기능도 계속 제공합니다.
.NET 네이티브는 정적 미리 컴파일 시나리오용으로 최적화된 C++ 컴파일러와 같은 백 엔드를 사용합니다.
.NET Native는 이 표에 나와있는 것처럼 내부적으로 C++와 동일하거나 유사한 도구를 사용하기 때문에 관리 코드 개발자에게 C++의 성능 이점을 제공할 수 있습니다.
구성 요소 | .NET 네이티브 | C++ |
---|---|---|
라이브러리 | .NET Framework + Windows 런타임 | Win32 + Windows 런타임 |
컴파일러 | UTC 최적화 컴파일러 | UTC 최적화 컴파일러 |
배포됨 | 실행 가능 이진 파일 | 실행 가능 이진 파일(ASM) |
런타임 | MRT.dll(최소 CLR 런타임) | CRT.dll(C 런타임) |
UWP 앱의 경우 앱 패키지(.msix 또는 .appx 파일)의 .NET 네이티브 코드 컴파일 바이너리를 Microsoft Store에 업로드합니다.