Kompilowanie aplikacji z architekturą .NET NativeCompiling Apps with .NET Native

.NET Native jest technologią prekompilacji do kompilowania i wdrażania aplikacji systemu Windows, które są dołączone do programu Visual Studio 2015 i jego nowszych wersji..NET Native is a precompilation technology for building and deploying Windows apps that is included with Visual Studio 2015 and later versions. Automatycznie kompiluje wydaną wersję aplikacji, które są zapisywane w kodzie zarządzanym (C# lub Visual Basic), które są przeznaczone dla .NET Framework i systemu Windows 10 do kodu natywnego.It automatically compiles the release version of apps that are written in managed code (C# or Visual Basic) and that target the .NET Framework and Windows 10 to native code.

Zazwyczaj aplikacje przeznaczone dla .NET Framework są kompilowane do języka pośredniego (IL).Typically, apps that target the .NET Framework are compiled to intermediate language (IL). W czasie wykonywania kompilator just-in-Time (JIT) tłumaczy kod IL na natywny.At run time, the just-in-time (JIT) compiler translates the IL to native code. Z kolei .NET Native kompiluje aplikacje systemu Windows bezpośrednio do kodu natywnego.In contrast, .NET Native compiles Windows apps directly to native code. Dla deweloperów oznacza to:For developers, this means:

  • Twoje aplikacje mają wydajność kodu natywnego.Your apps feature the performance of native code. Zwykle wydajność zostanie przewyższana do kodu, który jest najpierw kompilowany do IL, a następnie skompilowany do kodu natywnego przez kompilator JIT.Usually, performance will be superior to code that is first compiled to IL and then compiled to native code by the JIT compiler.

  • Możesz kontynuować program w C# programie lub Visual Basic.You can continue to program in C# or Visual Basic.

  • Można nadal korzystać z zasobów udostępnianych przez .NET Framework, w tym biblioteki klas, automatycznego zarządzania pamięcią i wyrzucania elementów bezużytecznych oraz obsługi wyjątków.You can continue to take advantage of the resources provided by the .NET Framework, including its class library, automatic memory management and garbage collection, and exception handling.

W przypadku użytkowników aplikacji .NET Native oferuje następujące korzyści:For users of your apps, .NET Native offers these advantages:

  • Krótsze czasy wykonywania większości aplikacji i scenariuszy.Faster execution times for the majority of apps and scenarios.

  • Krótszy czas uruchamiania dla większości aplikacji i scenariuszy.Faster startup times for the majority of apps and scenarios.

  • Niskie koszty wdrożenia i aktualizacji.Low deployment and update costs.

  • Zoptymalizowano użycie pamięci przez aplikację.Optimized app memory usage.

Ważne

W przypadku większości aplikacji i scenariuszy .NET Native oferuje znacznie krótszy czas uruchamiania i wyższą wydajność w porównaniu z aplikacją skompilowaną do IL lub obrazu NGEN.For the vast majority of apps and scenarios, .NET Native offers significantly faster startup times and superior performance when compared to an app compiled to IL or to an NGEN image. Jednak wyniki mogą się różnić.However, your results may vary. Aby upewnić się, że aplikacja korzystała z ulepszeń .NET Native, należy porównać jej wydajność z wersją natywną aplikacji non-.NET.To ensure that your app has benefited from the performance enhancements of .NET Native, you should compare its performance with that of the non-.NET Native version of your app. Aby uzyskać więcej informacji, zobacz Omówienie sesji wydajności.For more information, see Performance Session Overview.

Ale .NET Native zawiera więcej niż Kompilacja kodu natywnego.But .NET Native involves more than a compilation to native code. Przekształca on sposób kompilowania i wykonywania .NET Framework aplikacji.It transforms the way that .NET Framework apps are built and executed. W szczególności:In particular:

  • Podczas wstępnej kompilacji wymagane fragmenty .NET Framework są statycznie połączone z aplikacją.During precompilation, required portions of the .NET Framework are statically linked into your app. Dzięki temu aplikacja może działać z bibliotekami lokalnymi aplikacji .NET Framework i kompilatorem do wykonywania analizy globalnej w celu zapewnienia wydajności usługi WINS.This allows the app to run with app-local libraries of the .NET Framework, and the compiler to perform global analysis to deliver performance wins. W efekcie aplikacje są uruchamiane w sposób ciągły nawet po aktualizacji .NET Framework.As a result, apps launch consistently faster even after .NET Framework updates.

  • Środowisko uruchomieniowe .NET Native jest zoptymalizowane pod kątem statycznej kompilacji wstępnej, a w większości przypadków oferuje najwyższą wydajność.The .NET Native runtime is optimized for static precompilation and in the vast majority of cases offers superior performance. W tym samym czasie zachowuje podstawowe funkcje odbicia, które deweloperzy mogą znaleźć.At the same time, it retains the core reflection features that developers find so productive.

  • .NET Native używa tego samego zaplecza, co C++ kompilator, który jest zoptymalizowany pod kątem statycznych scenariuszy prekompilacji..NET Native uses the same back end as the C++ compiler, which is optimized for static precompilation scenarios.

.NET Native jest w stanie obsłużyć zalety wydajności C++ programu dla deweloperów kodu zarządzanego, ponieważ używa tych samych lub podobnych narzędzi C++ , co w obszarze okapu, jak pokazano w tej tabeli..NET Native is able to bring the performance benefits of C++ to managed code developers because it uses the same or similar tools as C++ under the hood, as shown in this table.

Architektura .NET Native.NET Native C++C++
BibliotekiLibraries .NET Framework + środowisko wykonawcze systemu WindowsThe .NET Framework + Windows Runtime Win32 + środowisko wykonawcze systemu WindowsWin32 + Windows Runtime
CompilerCompiler Kompilator optymalizacji UTCUTC optimizing compiler Kompilator optymalizacji UTCUTC optimizing compiler
szczeblDeployed Gotowe do uruchomienia pliki binarneReady-to-run binaries Gotowe do uruchomienia pliki binarne (ASM)Ready-to-run binaries (ASM)
Środowisko uruchomienioweRuntime MRT. dll (minimalne środowisko uruchomieniowe CLR)MRT.dll (Minimal CLR Runtime) CRT. dll (środowisko uruchomieniowe języka C)CRT.dll (C Runtime)

W przypadku aplikacji systemu Windows dla systemu Windows 10 przekazywanie plików binarnych kompilacji kodu .NET Native w pakietach aplikacji (pliki. appx) do sklepu Windows.For Windows apps for Windows 10, you upload .NET Native Code Compilation binaries in app packages (.appx files) to the Windows Store.

W tej sekcjiIn This Section

Aby uzyskać więcej informacji na temat opracowywania aplikacji za pomocą kompilacji kodu .NET Native, zobacz następujące tematy:For more information about developing apps with .NET Native Code Compilation, see these topics: