Udostępnij za pośrednictwem


Optymalizowanie aplikacji desktopowych platformy .NET za pomocą obrazów natywnych

Czas uruchamiania aplikacji .NET Framework można poprawić przez wstępne kompilowanie plików binarnych. Tej technologii można używać w dużych aplikacjach, które pakujesz i rozpowszechniasz za pośrednictwem sklepu Microsoft Store. W niektórych przypadkach zaobserwowaliśmy 20% poprawę wydajności. Więcej informacji na temat tej technologii można uzyskać w temacie Omówienie techniczne.

Opublikowaliśmy kompilator obrazów natywnych jako pakiet NuGet. Ten pakiet można zastosować do dowolnej aplikacji .NET Framework przeznaczonej dla programu .NET Framework w wersji 4.6.2 lub nowszej. Ten pakiet dodaje etap po kompilacji, który zawiera natywną zawartość do wszystkich plików binarnych wykorzystywanych przez aplikację. Ten zoptymalizowany ładunek zostanie załadowany, gdy aplikacja będzie działać na platformie .NET 4.7.2 lub nowszej, podczas gdy poprzednie wersje nadal będą ładować kod MSIL.

Program .NET Framework 4.7.2 jest uwzględniony w aktualizacji systemu Windows 10 z kwietnia 2018 r. Możesz również zainstalować tę wersję programu .NET Framework na komputerach z systemami Windows 7+ i Windows Server 2008 R2+.

Ważne

Jeśli chcesz utworzyć obrazy natywne dla swojej aplikacji pakowanej przez projekt Windows Application Packaging, upewnij się, że ustawiono minimalną wersję Platformy docelowej projektu na Aktualizację rocznicową systemu Windows.

Jak tworzyć obrazy natywne

Postępuj zgodnie z tymi instrukcjami, aby skonfigurować projekty.

  1. Konfigurowanie platformy docelowej jako 4.6.2 lub nowszej

  2. Konfigurowanie platformy docelowej jako x86 lub x64

  3. Dodaj pakiety NuGet.

  4. Utwórz kompilację wydania.

Konfigurowanie platformy docelowej jako 4.6.2 lub nowszej

Aby skonfigurować projekt pod kątem platformy .NET Framework 4.6.2, potrzebne będą narzędzia programistyczne .NET Framework 4.6.2 lub nowsze. Te narzędzia są dostępne za pośrednictwem instalatora programu Visual Studio jako opcjonalne składniki w ramach środowiska deweloperskiego aplikacji klasycznych .NET:

Instalowanie narzędzi programistycznych platformy .NET 4.6.2

Alternatywnie możesz pobrać pakiety deweloperskie platformy .NET z: https://www.microsoft.com/net/download/visual-studio-sdks

Konfigurowanie platformy docelowej jako x86 lub x64

Kompilator obrazów natywnych optymalizuje kod dla danej platformy. Aby go używać, należy skonfigurować aplikację tak, aby była skierowana do jednej określonej platformy, takiej jak x86 lub x64.

Jeśli masz wiele projektów w rozwiązaniu, tylko projekt punktu wejścia (najprawdopodobniej projekt tworzący plik wykonywalny) musi zostać skompilowany jako x86 lub x64. Dodatkowe pliki binarne, do których odwołuje się główny projekt, zostaną przetworzone z architekturą określoną w głównym projekcie, nawet jeśli są one kompilowane jako AnyCPU.

Aby skonfigurować projekt:

  1. Kliknij rozwiązanie prawym przyciskiem myszy, a następnie wybierz pozycję Configuration Manager.

  2. Wybierz pozycję <Nowy .> w menu rozwijanym Platforma obok nazwy projektu, który generuje plik wykonywalny.

  3. W oknie dialogowym Nowa platforma projektu upewnij się, że na liście rozwijanej Ustawienia kopiowania jest ustawiona wartość Dowolny procesor CPU.

Konfigurowanie architektury x86

Powtórz ten krok dla Release/x64, jeśli chcesz utworzyć pliki binarne x64.

Ważne

Konfiguracja platformy AnyCPU nie jest obsługiwana przez kompilator obrazów natywnych.

Dodawanie pakietów NuGet

Kompilator obrazu natywnego jest dostarczany jako pakiet NuGet, który należy dodać do projektu programu Visual Studio tworzącego plik wykonywalny. Jest to zazwyczaj projekt Windows Forms lub WPF. Użyj tego polecenia programu PowerShell, aby to zrobić.

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

Kompilacja wersji finalnej

Pakiet NuGet konfiguruje projekt pod kątem uruchamiania dodatkowego narzędzia przy budowaniu wersji do wydania. To narzędzie dodaje kod macierzysty do tych samych plików binarnych. Aby sprawdzić, czy narzędzie przetworzyło pliki binarne, możesz przejrzeć dane wyjściowe kompilacji, aby upewnić się, że zawiera on komunikat, taki jak ten:

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

Kompilacja obrazu natywnego może być wyzwalana w kompilacjach niewydaniowych, ustawiając właściwość NgenR2R na true w pliku projektu.

Często zadawane pytania

Pytanie Czy nowe pliki binarne działają na maszynach bez programu .NET Framework 4.7.2?

Odp. Zoptymalizowane pliki binarne będą korzystać z ulepszeń podczas pracy z programem .NET Framework 4.7.2. Klienci, którzy uruchamiają poprzednie wersje platformy .NET Framework, załadują nieoptymalizowany kod MSIL z pliku binarnego.

Pytanie Jak mogę przekazać opinię lub zgłosić problemy?

Odp. Zgłoś problem przy użyciu narzędzia Opinie w programie Visual Studio. Więcej informacji.

Pytanie Jaki jest wpływ dodawania obrazu natywnego do istniejących plików binarnych?

Odp. Zoptymalizowane pliki binarne zawierają zarządzany i natywny kod, dzięki czemu ostateczne pliki będą większe.

Pytanie Czy mogę opublikować pliki binarne przy użyciu tej technologii?

Odp. Ta wersja zawiera licencję Go Live, której można używać dzisiaj.