Udostępnij za pośrednictwem


Modernizuj aplikację platformy UWP przy użyciu .NET i natywnej usługi AOT

Obsługa platformy UWP dla nowoczesnych .NET jest teraz ogólnie dostępna i jest typem projektu default dla aplikacji platformy UWP języka C# w Visual Studio 2026. Visual Studio 2026 zawiera wbudowane szablony projektów do tworzenia nowych aplikacji platformy UWP, bibliotek klas i składników środowisko wykonawcze systemu Windows przy użyciu latest .NET.

Uwaga / Notatka

Ten artykuł dotyczy .NET Native starszej technologii prekompilacji dla aplikacji platformy UWP. .NET Native będzie nadal otrzymywać poprawki zabezpieczeń i niezawodności, ale nie będą otrzymywać nowych aktualizacji funkcji. Jeśli obecnie używasz .NET Native, ten przewodnik pomoże Ci zrozumieć korzyści wynikające z migracji do nowoczesnego .NET z funkcją Native AOT.

Dlaczego modernizować nowoczesne .NET?

Uaktualnianie aplikacji platformy UWP z .NET Native do latest .NET z natywną funkcją AOT zapewnia kilka kluczowych korzyści:

Dostęp do nowoczesnych funkcji .NET

  • funkcje Latest .NET i C#: Użyj latest .NET ze wszystkimi nowoczesnymi funkcjami języka i interfejsami API
  • Aktywne programowanie: .NET Native będzie nadal otrzymywać poprawki zabezpieczeń i niezawodności, ale nie będą otrzymywać nowych aktualizacji funkcji. Nowoczesne .NET jest aktywnie opracowywane z regularnymi wersjami funkcji
  • Lepsza zgodność bibliotek: Odwołanie do nowszych wersji pakietów NuGet, które obsługują tylko .NET 6 i nowsze

Ulepszone środowisko deweloperskie

  • Szybsze czasy kompilacji: Znacznie szybsza kompilacja w porównaniu z .NET Native
  • Lepsza obsługa debugowania: ulepszone narzędzia debugowania i możliwości diagnostyczne dotyczące problemów z AOT i redukcją代码
  • Pliki projektu w stylu SDK: nowoczesne, przejrzyste pliki .csproj bez rozbudowanych konfiguracji w starszym stylu
  • XAML Przeładowywanie na gorąco: pełna obsługa Przeładowywanie na gorąco XAML i C# podczas programowania
  • Lepsze narzędzia: funkcja IntelliSense, podgląd na żywo i diagnostyka XAML działają bezproblemowo

Korzyści z wydajności

  • Native AOT compilation: Podobna lub lepsza wydajność uruchamiania w porównaniu z .NET Native
  • Zoptymalizowane środowisko uruchomieniowe: ulepszenia wydajności dzięki optymalizacjom między proceduralnymi
  • Walidacja statyczna: Przechwytywanie problemów ze zgodnością usługi AOT w czasie kompilacji za pomocą analizatorów i adnotacji

Ścieżka migracji przyrostowej do winUI 3

Zamiast migrować jednocześnie zarówno środowisko uruchomieniowe .NET, jak i strukturę interfejsu użytkownika, można teraz stosować podejście przyrostowe:

  1. Najpierw przeprowadź migrację do najnowszej .NET i zweryfikuj zgodność natywnej funkcji AOT
  2. Następnie należy przeprowadzić oddzielną migrację z XAML platformy UWP do systemu WinUI 3 i modelu aplikacji Win32

To dwuetapowe podejście zmniejsza ryzyko i zwiększa możliwości zarządzania migracją.

Wymagania wstępne

Do tworzenia aplikacji UWP z nowoczesnym .NET, potrzebne są:

  • Visual Studio 2026
  • platforma uniwersalna systemu Windows tools obciążenie
  • Windows SDK 10.0.26100.0 lub nowszy

Etapy instalacji

  1. Otwórz Instalatora Visual Studio
  2. W obszarze Workloads>Pulpit i urządzenia mobilne wybierz pakiet roboczy Windows
  3. W obszarze Opcjonalne (w okienku po prawej stronie) wybierz pozycję:
    • platforma uniwersalna systemu Windows tools — zawiera wszystkie narzędzia dla aplikacji platformy UWP
    • Windows 11 SDK (10.0.26100.0) — wymagane do kompilowania aplikacji XAML platformy UWP

Tworzenie nowego projektu UWP z nowoczesnym .NET

Visual Studio 2026 zawiera kilka szablonów projektów dla platformy UWP z najbardziej aktualnym frameworkiem .NET. Domyślnie domyślne szablony projektów platformy UWP języka C# są teraz przeznaczone dla nowoczesnych .NET zamiast .NET Native:

  • Pusta aplikacja UWP: Standardowa aplikacja UWP XAML z jednoprojektowym pakietowaniem MSIX
  • Blank UWP CoreApplication App: w przypadku zaawansowanych scenariuszy z zawartością kompozycja/DirectX (bez użycia XAML)
  • UWP środowisko wykonawcze systemu Windows Component: Zarządzany komponent WinRT z użyciem najnowszego .NET i CsWinRT
  • Biblioteka klas platformy UWP: biblioteka klas z obsługą języka XAML

Wskazówka

Dziedziczne szablony .NET Native (oznaczone jako ".NET Native") są nadal dostępne dla zachowania kompatybilności, ale nowocześniejsze szablony .NET są zalecane dla wszystkich nowych projektów.

Utwórz nowy projekt

  1. W Visual Studio wybierz Plik>Nowy>Project
  2. Filtruj według języka C# i platformy UWP na liście rozwijanej typ projektu
  3. Wybieranie pustego szablonu aplikacji platformy UWP
  4. Wprowadź nazwę projektu i wybierz pozycję Utwórz
  5. Wybierz docelową i minimalną wersję Windows

Omówienie nowoczesnych projektów .NET platformy UWP

Nowoczesne projekty .NET platformy UWP używają plików .csproj w stylu SDK z kluczowymi właściwościami:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net10.0-windows10.0.26100.0</TargetFramework> <!-- Use the latest supported .NET version -->
    <TargetPlatformMinVersion>10.0.19041.0</TargetPlatformMinVersion>
    <UseUwp>true</UseUwp>
    <EnableMsixTooling>true</EnableMsixTooling>
    <PublishAot>true</PublishAot>
    <DisableRuntimeMarshalling>true</DisableRuntimeMarshalling>
  </PropertyGroup>
</Project>

Wyjaśnienie kluczowych właściwości

  • UseUwp: Odwołuje się do projekcji WinRT dla Windows.UI.Xaml i konfiguruje CsWinRT pod kątem zgodności platformy UWP
  • UseUwpTools: umożliwia korzystanie z narzędzi specyficznych dla platformy UWP, w tym kompilatora XAML, możliwości projektu i pakowania MSIX. Pamiętaj, że ta właściwość jest domyślnie włączona, gdy UseUwp jest włączona.
  • EnableMsixTooling: umożliwia obsługę msiX pojedynczego projektu (nie jest wymagany oddzielny projekt pakowania)
  • PublishAot: włącza natywną kompilację AOT
  • DisableRuntimeMarshalling: optymalizuje wydajność dla natywnych scenariuszy AOT

Migrowanie istniejących aplikacji platformy UWP do nowoczesnej .NET

Aby przeprowadzić migrację istniejącej aplikacji platformy UWP z .NET Native do nowoczesnego .NET:

Krok 1. Aktualizowanie pliku Project

  1. Konwertowanie istniejącego pliku csproj na format w stylu zestawu SDK
  2. Dodaj wymagane właściwości — UseUwp, , EnableMsixTooling, lub PublishAotSelfContained
  3. Zaktualizuj referencje pakietów NuGet do wersji zgodnych z najnowszą wersją .NET

Krok 2. Rozwiązywanie problemów z natywną zgodnością funkcji AOT

Native AOT wymaga, aby cały kod był kompatybilny z AOT. Typowe problemy są następujące:

  • Użycie odbicia: dodaj odpowiednie atrybuty lub użyj generatorów źródeł
  • Generowanie kodu dynamicznego: zamień na alternatywy czasu kompilacji
  • Biblioteki innych firm: upewnij się, że wszystkie zależności obsługują natywne AOT

Aby uzyskać dalsze informacje na temat zgodności z AOT:

Projekty kodu aplikacji:

<PropertyGroup>
  <PublishAot>true</PublishAot>
</PropertyGroup>

Następujące elementy można ustawić w projektach biblioteki:

<PropertyGroup>
  <IsAotCompatible>true</IsAotCompatible>
</PropertyGroup>

Jeśli istniejąca aplikacja używa pliku runtime directives (rd.xml) dla .NET Native, należy spełnić wymagania dotyczące odbicia i przycinania w inny sposób z Native AOT, używając atrybutów i analizatorów.

Wskazówka

Należy używać [GeneratedBindableCustomProperty] w klasach, które wymagają {Binding} w XAML. Te klasy powinny być oznaczone jako partial.

Krok 3. Dokładnie przetestuj

  1. Kompilowanie aplikacji w trybie wydania przy użyciu natywnej funkcji AOT włączonej
  2. Przetestuj wszystkie funkcje — kod skompilowany za pomocą AOT zachowuje się identycznie jak buildy debugowania, gdy są prawidłowo oznakowane adnotacjami.
  3. Rozwiąż ostrzeżenia dotyczące przycinania lub AOT przed opublikowaniem

Aby uzyskać więcej informacji na temat zgodności z natywną funkcją AOT, zobacz Wprowadzenie do ostrzeżeń AOT oraz Przygotuj biblioteki .NET do przycinania.

Natywna AOT a natywna .NET

Mimo że obie kompilują aplikację do kodu natywnego, Native AOT różni się od .NET Native pod ważnymi względami.

Walidacja statyczna

  • Natywna funkcja AOT: używa analizy statycznej z adnotacjami kodu i analizatorami do weryfikowania zgodności funkcji AOT w czasie kompilacji
  • .NET Native: Używa heurystyki i logiki rezerwowej, która może prowadzić do awarii środowiska uruchomieniowego trudnego do debugowania

Wydajność i rozmiar

  • Wydajność uruchamiania: Native AOT zapewnia podobną lub lepszą wydajność uruchamiania (~5% poprawy wyników w testach porównawczych)
  • Rozmiar binarny: spodziewaj się wzrostu ok. 4 MB dla mniejszych aplikacji z powodu wdrożenia samodzielnego (bez pakietu struktury udostępnionej)
  • Wydajność środowiska uruchomieniowego: lepsza wydajność kodu zaplecza za pomocą optymalizacji między proceduralnych

Środowisko dewelopera

  • Natywna funkcja AOT: Problemy występują podczas programowania z przejrzystymi komunikatami o błędach i obsługą debugowania
  • .NET Native: Długi czas kompilacji, różnice między Debug i Release oraz trudne do zdiagnozowania problemy ze środowiskiem uruchomieniowym

Refleksja i metadane

  • Natywna funkcja AOT: używa atrybutów czasu kompilacji, takich jak [DynamicallyAccessedMembers] i generatorów źródłowych do obsługi odbicia
  • .NET Native: Używa plików dyrektyw środowiska uruchomieniowego (rd.xml) w celu określenia wymagań dotyczących metadanych w czasie kompilacji

Aby uzyskać więcej informacji na temat ograniczeń .NET natywnych, zobacz Poprowadzenie z .NET Native i .NET Native and Compilation.

Publikowanie w Microsoft Store

Podczas publikowania aplikacji platformy UWP za pomocą współczesnego .NET w Microsoft Store:

  1. Kompilacja w konfiguracji wydania z włączoną funkcją PublishAot lub SelfContained
  2. Zadbaj o to, aby nie było żadnych ostrzeżeń dotyczących AOT ani ostrzeżeń o przycinaniu
  3. Tworzenie pakietu MSIX w zwykły sposób
  4. Prześlij do Centrum Partnerskiego

Uwaga / Notatka

Możesz zignorować błędy zestawu certyfikacji aplikacja dla systemu Windows (WACK) związane z "nieobsługiwanymi interfejsami API Win32". Centrum partnerskie nie wykonuje już ścisłej weryfikacji interfejsu API Win32 dla aplikacji platformy UWP. Zabezpieczenia aplikacji AppContainer obsługują zamiast tego uprawnienia środowiska uruchomieniowego.

Scenariusze zaawansowane

UWP XAML Islands

Dzięki nowoczesnej .NET można hostować kontrolki XAML platformy UWP wewnątrz aplikacji Win32 (WinForms, WPF, WinUI 3). Umożliwia to:

  • Hostowanie kontrolek platformy UWP, takich jak MapControl, w aplikacjach z pełnym zaufaniem.
  • Jednoprojektowe rozwiązanie łączące aplikacje Win32 i składniki platformy UWP
  • Pojedynczy natywny plik binarny bez oddzielnych łańcuchów narzędzi kompilacji

Korzystanie z najnowszych pakietów NuGet

Nowoczesna obsługa .NET umożliwia odwoływanie się do nowoczesnych pakietów NuGet, które wymagają .NET 6 lub nowszych, usuwając ograniczenie .NET Standard 2.0, które pochodzi z .NET Native.

Dodatkowe zasoby

Zobacz też

Dokumentacja .NET Native (starsza wersja)

Zasoby migracji