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.
Aplikacje mobilne platformy .NET 11 mogą używać JIT CoreCLR, ReadyToRun (R2R) i interpretera CoreCLR. Dostępne tryby nadal zależą od konfiguracji docelowej i kompilacji.
Wersja wprowadzona
.NET 11
Poprzednie zachowanie
Aplikacje mobilne platformy .NET 10 mogą używać kompilacji JIT Mono, kompilacji AOT Mono, kompilacji AOT Mono z LLVM oraz interpretera Mono. Dostępne tryby zależały od celu docelowego i konfiguracji kompilacji.
Niektóre aplikacje używały interpretera Mono tylko dla wybranej listy asemblacji. Pomogło to tym aplikacjom zrównoważyć zgodność i szybkość.
Nowe zachowanie
Aplikacje mobilne platformy .NET 11 mogą używać JIT CoreCLR, ReadyToRun (R2R) i interpretera CoreCLR. Dostępne tryby nadal zależą od celu i konfiguracji kompilacji.
R2R to technologia AOT, ale nie jest nową nazwą mono AOT. Przechowuje on IL i metadane w aplikacji i może używać JIT lub interpretera, gdy platforma docelowa na to zezwala.
Kompilacje wydania dla Androida używają CoreCLR R2R do wstępnego kompilowania części aplikacji i trybu JIT dla reszty.
MauiEnableFullReadyToRun=true stosuje R2R w całej aplikacji.
Aplikacja może nadal używać trybu JIT w czasie wykonywania, aby zapewnić dynamiczne zachowanie. Kompilacje debugowe używają mniej R2R, więc większość aplikacji jest uruchamiana przy użyciu trybu JIT.
Kompilacje wydaniowe Apple kompilują wstępnie całą aplikację z użyciem R2R i mogą używać interpretera w czasie wykonywania w celu obsługi dynamicznego działania. Kompilacje debug używają mniej R2R, więc większość aplikacji działa z interpreterem.
NativeAOT to kolejna opcja generowania kodu na platformach mobilnych. Różni się on zarówno od mono AOT, jak i CoreCLR R2R. Android NativeAOT jest eksperymentalny w .NET 11.
Typ zmiany przełamującej
Ta zmiana może mieć wpływ na zgodność ze źródłem i zachowanie.
Przyczyna zmiany
CoreCLR używa własnego kompilatora i modelu wykonywania. Ustawienia Mono AOT nie wpływają na CoreCLR R2R.
Zalecana akcja
- Użyj wartości domyślnych R2R z obciążenia mobilnego.
- Nie próbuj tłumaczyć każdego ustawienia AOT mono na ustawienie R2R.
- Użyj
MauiEnableFullReadyToRuntylko po zmierzeniu aplikacji. - Mierz czas uruchamiania, szybkość, użycie pamięci i rozmiar aplikacji.
- Jeśli rozważasz rozwiązanie NativeAOT, zapoznaj się z wskazówkami dotyczącymi wdrażania Native AOT dla platformy .NET MAUI, ponieważ jest to oddzielny model wdrażania z różnymi ograniczeniami. Traktuj system Android NativeAOT jako eksperymentalny w .NET 11.
Interfejsy API, których dotyczy problem
Nie są usuwane żadne zarządzane interfejsy API. Następujące właściwości i elementy programu MSBuild nie zapewniają już efektu generowania kodu Mono, gdy aplikacja używa coreCLR:
-
Android:
RunAOTCompilation,EnableLLVM,AndroidEnableProfiledAot,AndroidAotAdditionalArguments,AndroidExtraAotOptions,AndroidAotMode,AotAssemblies,AndroidAotEnableLazyLoad,AndroidUseInterpreter,@(AndroidAotProfile),UseInterpreteriAndroidEnableMarshalMethods. -
iOS, tvOS i Mac Catalyst:
UseInterpreter,MtouchInterpreter,MtouchUseLlvm,MtouchFloat32MonoUseCompressedInterfaceBitmap,RunAotCompilation,AotAssemblies, iAotCompileMaxDegreeOfParallelism.
Te ustawienia umożliwiają skonfigurowanie kompilacji mono AOT, LLVM, wyboru interpretera, danych wejściowych AOT lub wygenerowanych metod marshalingu. Nie konfigurują potoku CoreCLR ReadyToRun. Aby uzyskać szczegółowe informacje na temat zachowania migracji i diagnostyki kompilacji, zobacz Właściwości projektu Mono nie konfigurują już aplikacji mobilnych.