다음을 통해 공유


.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 네이티브는 이 표와 같이 C++와 동일하거나 유사한 도구를 사용하므로 관리 코드 개발자에게 C++의 성능 이점을 가져올 수 있습니다.

구성 요소 .NET 네이티브 C++
라이브러리 .NET Framework + Windows 런타임 Win32 + Windows 런타임
컴파일러 UTC 최적화 컴파일러 UTC 최적화 컴파일러
배포 즉시 실행 가능한 이진 파일 실행 가능한 바이너리 파일(ASM)
실행 시간 MRT.dll(최소 CLR 런타임) CRT.dll(C 런타임)

UWP 앱의 경우 앱 패키지(.msix 또는 .appx 파일)의 .NET 네이티브 코드 컴파일 이진 파일을 Microsoft Store에 업로드합니다.