네이티브 이미지를 사용하여 .NET 데스크톱 앱 최적화Optimize your .NET desktop apps with native images

이진 파일을 미리 컴파일하여 .NET Framework 애플리케이션의 시작 시간을 향상할 수 있습니다.You can improve the startup time of your .NET Framework application by pre-compiling your binaries. Microsoft Store를 통해 패키징하고 배포하는 대규모 애플리케이션에서 이 기술을 사용할 수 있습니다.You can use this technology on large applications that you package and distribute through the Microsoft Store. 경우에 따라 20%의 성능 향상이 관찰되기도 했습니다.In some cases, we've observed a 20% performance improvement. 기술 개요에서 이 기술에 대해 자세히 알아볼 수 있습니다.You can learn more about this technology in the technical overview.

네이티브 이미지 컴파일러가 NuGet 패키지로 출시되었습니다.We've released the native image compiler as a NuGet package. .NET Framework 버전 4.6.2 이상 버전을 대상으로 하는 모든 .NET Framework 애플리케이션에 이 패키지를 적용할 수 있습니다.You can apply this package to any .NET Framework application that targets the .NET Framework version 4.6.2 or later. 이 패키지는 애플리케이션에서 사용하는 모든 이진 파일에 기본 페이로드를 포함하는 빌드 후 단계를 추가합니다.This package adds a post build step that includes a native payload to all the binaries used by your application. 이렇게 최적화된 페이로드는 애플리케이션에서 .NET 4.7.2 이상을 실행할 때 로드되지만, 이전 버전은 계속해서 MSIL 코드를 로드합니다.This optimized payload will be loaded when the application runs in .NET 4.7.2 and above while previous versions will still load the MSIL code.

.NET Framework 4.7.2Windows 10 2018년 4월 업데이트에 포함되어 있습니다.The .NET framework 4.7.2 is included in the Windows 10 April 2018 update. Windows 7 이상 및 Windows Server 2008 R2 이상을 실행하는 PC에 이 버전의 .NET Framework를 설치할 수도 있습니다.You can also install this version of the .NET Framework on PCs that run Windows 7+ and Windows Server 2008 R2+.

중요

Windows 애플리케이션 패키징 프로젝트를 통해 패키징된 애플리케이션의 네이티브 이미지를 생성하려면 프로젝트의 대상 플랫폼 최소 버전을 Windows 1주년 업데이트로 설정해야 합니다.If you want to produce native images for your application packaged by the Windows Application Packaging project, make sure to set the Target Platform Minimum version of the project to the Windows Anniversary Update.

네이티브 이미지를 생성하는 방법How to produce native images

다음 지침에 따라 프로젝트를 구성합니다.Follow these instructions to configure your projects.

  1. 대상 프레임워크를 4.6.2 이상으로 구성Configure the target framework as 4.6.2 or above

  2. 대상 플랫폼을 x86 또는 x64로 구성Configure the target platform as x86 or x64

  3. NuGet 패키지를 추가합니다.Add the NuGet packages.

  4. 릴리스 빌드를 만듭니다.Create a Release Build.

대상 프레임워크를 4.6.2 이상으로 구성Configure the target framework as 4.6.2 or above

.NET Framework 4.6.2를 대상으로 하도록 프로젝트를 구성하려면 .NET Framework 4.6.2 이상 개발 도구가 필요합니다.To configure your project to target .NET Framework 4.6.2 you will need the .NET Framework 4.6.2 development tools or newer. 이러한 도구는 Visual Studio 설치 관리자를 통해 .NET 데스크톱 개발 워크로드에서 선택적 구성 요소로 사용할 수 있습니다.These tools are available through the Visual Studio installer as optional components under the .NET desktop development workload:

.NET 4.6.2 개발 도구 설치

또는 https://www.microsoft.com/net/download/visual-studio-sdks에서 .NET 개발자 팩을 받을 수 있습니다.Alternatively, you can get the .NET developer packs from: https://www.microsoft.com/net/download/visual-studio-sdks

대상 플랫폼을 x86 또는 x64로 구성Configure the target platform as x86 or x64

네이티브 이미지 컴파일러는 지정된 플랫폼에 대한 코드를 최적화합니다.The native image compiler optimizes the code for a given platform. 네이티브 이미지 컴파일러를 사용하려면 x86 또는 x64처럼 한 특정 플랫폼을 대상으로 하도록 애플리케이션을 구성해야 합니다.To use it, you need to configure your application to target one specific platform such as x86 or x64.

솔루션에 여러 프로젝트가 있는 경우 진입점 프로젝트(대부분 실행 파일을 생성하는 프로젝트)만 x86 또는 x64로 컴파일해야 합니다.If you have multiple projects in your solution, only the entry point project (most likely the project that produces an executable file) has to be compiled as x86 or x64. 주 프로젝트에서 참조되는 추가 이진 파일은 AnyCPU로 컴파일된 경우에도 주 프로젝트에 지정된 아키텍처를 사용하여 처리됩니다.Additional binaries referenced from the main project will be processed with the architecture specified in the main project, even if they are compiled as AnyCPU.

프로젝트를 구성하는 방법은 다음과 같습니다.To configure your project:

  1. 솔루션을 마우스 오른쪽 단추로 클릭한 다음, 구성 관리자를 선택합니다.Right-click your solution, and then select Configuration Manager.

  2. 실행 파일을 생성하는 프로젝트 이름 옆에 있는 플랫폼 드롭다운 메뉴에서 <새로 만들기 ..> 를 선택합니다.Select <New ..> in the Platform dropdown menu beside the name of the project that produces your executable file.

  3. 새 프로젝트 플랫폼 대화 상자에서 드롭다운 목록의 설정 복사모든 CPU로 설정되었는지 확인합니다.In the New Project Platform dialog box, make sure that the Copy Settings from dropdown list is set to Any CPU.

x86 구성

x64 이진 파일을 생성하려면 Release/x64에 대해 이 단계를 반복합니다.Repeat this step for Release/x64 if you want produce x64 binaries.

중요

네이티브 이미지 컴파일러에서는 모든 CPU 구성이 지원되지 않습니다.AnyCPU configuration is not supported by the native image compiler.

NuGet 패키지 추가Add the NuGet packages

네이티브 이미지 컴파일러는 실행 파일을 생성하는 Visual Studio 프로젝트에 추가해야 하는 NuGet 패키지로 제공됩니다.The native image compiler is provided as a NuGet package that you need to add to the Visual Studio project that produces the executable file. 일반적으로 Windows Forms 또는 WPF 프로젝트입니다.This is typically your Windows Forms or WPF project. 이렇게 하려면 이 PowerShell 명령을 사용합니다.Use this PowerShell command to do that.

PM> Install-Package Microsoft.DotNet.Framework.NativeImageCompiler -Version 1.0.0

릴리스 빌드 만들기Create a Release Build

NuGet 패키지는 릴리스 빌드에 대한 추가 도구를 실행하도록 프로젝트를 구성합니다.The NuGet package configures the project to run an additional tool for release builds. 이 도구는 네이티브 코드를 동일한 이진 파일에 추가합니다.This tool adds the native code to the same binaries. 이 도구가 이진 파일을 처리했는지 확인하려면 빌드 출력을 검토하여 다음과 같은 메시지가 포함되어 있는지 확인하면 됩니다.To verify that the tool has processed the binaries you can review the build output to make sure it includes a message such as this one:

Native image obj\x86\Release\\R2R\DesktopApp1.exe generated successfully.

프로젝트 파일에서 NgenR2R 속성을 true로 설정하여 비-릴리스 빌드에서 네이티브 이미지 컴파일을 트리거할 수 있습니다.Native image compilation can be triggered on non-release builds by setting the property NgenR2R to true in the project file.

FAQFAQ

Q. 새 이진 파일은 .NET Framework 4.7.2가 없는 컴퓨터에서 작동하나요?Q. Do the new binaries work on machines without .NET Framework 4.7.2?

A.A. 최적화된 이진 파일은 .NET Framework 4.7.2를 실행할 때 향상된 기능을 활용합니다.Optimized binaries will benefit from the improvements when running with .NET Framework 4.7.2. 이전 .NET Framework 버전을 실행하는 클라이언트는 이진 파일에서 최적화되지 않은 MSIL 코드를 로드합니다.Clients that run previous .NET framework versions will load the non-optimized MSIL code from the binary.

Q. 피드백을 제공하거나 문제를 보고하려면 어떻게 해야 하나요?Q. How can I provide feedback or report issues?

A.A. Visual Studio 2017의 피드백 도구를 사용하여 문제를 보고하면 됩니다.Report an issue by using the Feedback tool in Visual Studio 2017. 추가 정보을 참조하세요.More information.

Q. 기존 이진 파일에 네이티브 이미지를 추가할 경우 어떤 영향이 있나요?Q. What’s the impact of adding the native image to existing binaries?

A.A. 최적화된 이진 파일은 관리 코드와 네이티브 코드를 포함하고 있으므로 최종 파일이 더 커집니다.The optimized binaries contain the managed and native code, making the final files greater.

Q. 이 기술을 사용하여 이진 파일을 릴리스할 수 있나요?Q. Can I release binaries using this technology?

A.A. 이 버전에는 현재 사용할 수 있는 Go Live 라이선스가 포함되어 있습니다.This version includes a Go Live license that you can use today.