.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 네이티브는 이 표와 같이 C++와 동일하거나 유사한 도구를 사용하므로 관리 코드 개발자에게 C++의 성능 이점을 가져올 수 있습니다.
구성 요소 | .NET 네이티브 | C++ |
---|---|---|
라이브러리 | .NET Framework + Windows 런타임 | Win32 + Windows 런타임 |
컴파일러 | UTC 최적화 컴파일러 | UTC 최적화 컴파일러 |
배포 | 즉시 실행 가능한 이진 파일 | 실행 가능한 바이너리 파일(ASM) |
실행 시간 | MRT.dll(최소 CLR 런타임) | CRT.dll(C 런타임) |
UWP 앱의 경우 앱 패키지(.msix 또는 .appx 파일)의 .NET 네이티브 코드 컴파일 이진 파일을 Microsoft Store에 업로드합니다.