.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에 업로드합니다.