Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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:
- Najpierw przeprowadź migrację do najnowszej .NET i zweryfikuj zgodność natywnej funkcji AOT
- 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
- Otwórz Instalatora Visual Studio
- W obszarze Workloads>Pulpit i urządzenia mobilne wybierz pakiet roboczy Windows
- 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
- W Visual Studio wybierz Plik>Nowy>Project
- Filtruj według języka C# i platformy UWP na liście rozwijanej typ projektu
- Wybieranie pustego szablonu aplikacji platformy UWP
- Wprowadź nazwę projektu i wybierz pozycję Utwórz
- 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
UseUwpjest 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
- Konwertowanie istniejącego pliku csproj na format w stylu zestawu SDK
- Dodaj wymagane właściwości —
UseUwp, ,EnableMsixTooling, lubPublishAotSelfContained - 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:
- Naprawianie ostrzeżeń dotyczących przycinania
- Znane niezgodności związane z przycinaniem
- Interfejsy API wewnętrzne oznaczone jako RequiresDynamicCode
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
- Kompilowanie aplikacji w trybie wydania przy użyciu natywnej funkcji AOT włączonej
- Przetestuj wszystkie funkcje — kod skompilowany za pomocą AOT zachowuje się identycznie jak buildy debugowania, gdy są prawidłowo oznakowane adnotacjami.
- 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:
- Kompilacja w konfiguracji wydania z włączoną funkcją
PublishAotlubSelfContained - Zadbaj o to, aby nie było żadnych ostrzeżeń dotyczących AOT ani ostrzeżeń o przycinaniu
- Tworzenie pakietu MSIX w zwykły sposób
- 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
- Wprowadzenie do wdrożenia natywnego AOT
- Przygotuj biblioteki .NET do optymalizacji
- Utwórz „Hello, World!” aplikację UWP
- Zestaw SDK do aplikacji systemu Windows i WinUI 3 — zalecane w przypadku nowych aplikacji Windows
Zobacz też
Dokumentacja .NET Native (starsza wersja)
- Compiling Apps with .NET Native — omówienie technologii natywnej .NET
- Rozpoczęcie pracy z .NET Native — jak używać .NET Native
- .NET Native i kompilacja - Zrozumienie kompilacji .NET Native
- Plik konfiguracyjny dyrektyw czasu wykonywania (rd.xml) — dokument referencyjny — konfiguracja metadanych natywnych .NET
Zasoby migracji
- wskazówki dotyczące migracji Zestaw SDK do aplikacji systemu Windows
- Pakowanie MSIX