Posted on 9. November 2022

Анонс .NET Community Toolkit v8.1.0 Preview 1

Read this article in your language IT | EN | DE | ES

Анонс .NET Community Toolkit v8.1.0 Preview 1

 

Пропонуємо вашій увазі попередню версію 1 майбутнього релізу .NET Community Toolkit 8.1! Ця перша офіційна попередня версія містить кілька дуже запитуваних нових функцій, виправлення помилок і, найголовніше, значне покращення продуктивності генераторів вихідних кодів MVVM Toolkit, завдяки чому користувацький інтерфейс розробника при їх використанні навіть у дуже великих проєктах стане кращим, ніж будь-коли!

Що входить до інструментарію .NET Community Toolkit? 

 

Щоб дати короткий огляд того, що мстить інструментарій .NET Community Toolkit, наведемо перелік бібліотек, з яких він складається:

Бібліотеки також широко використовуються у деяких програмах вхідних повідомлень, що постачаються з Windows, таких як Microsoft Store! 🚀

Для більш детальної інформації про історію розвитку інструментарію .NET Community Toolkit, ознайомтеся з посиланням на попередній пост з анонсом версії 8.0.0.

Ось перелік основних змін, які ви можете очікувати в цьому новому випуску.

Користувацькі атрибути для [ObservableProperty

Однією з найбільш запитуваних функцій (див. #208, #217, #228) для генератора вихідного коду MVVM Toolkit була підтримка використання користувацьких атрибутів для [ObservableProperty]. Було запропоновано декілька проєктів для підтримки цього, і врешті-решт було вирішено використати наявну властивість: синтаксис у C#, який дозволяє розробникам позначати атрибути для розповсюдження на згенеровані властивості. Це дає нам декілька переваг:

 

  • Він використовує вбудований синтаксис C#, що робить функцію "рідною" і не потребує додаткових атрибутів
  • Це розв'язувати проблему анотування атрибутів, які можуть бути спрямовані лише на властивості, а не на поля
Тобто, у MVVM Toolkit 8.1 тепер підтримується наступний сценарій:
Після цього буде згенеровано наступну властивість за лаштунками:

 

Ви можете побачити, як згенерована властивість має два атрибути, які було вказано! Це забезпечує повну гнучкість в анотаціях для згенерованих властивостей, використовуючи вбудований синтаксис C# і без обмежень на типи атрибутів, які підтримуються цією функцією. 🙌

Примітка: згенерований код дещо відрізняється і містить додаткові оптимізації продуктивності, які тут не показано.

Ви можете знайти всі документи про нові генератори вихідних текстів тут, а якщо ви віддаєте перевагу відеоверсії, Джеймс Монтемагно також зробив кілька відео про них, наприклад, це.

Оптимізація генератора вихідних текстів MVVM Toolkit 

Як вже було сказано, ця нова попередня версія також містить значну оптимізацію продуктивності MVVM Toolkit, щоб ще більше покращити UX для розробників, особливо при роботі над дуже великими рішеннями. Команда провела багато часу, покращуючи архітектуру всіх генераторів і спілкуючись з інженерами з команди Roslyn, щоб переконатися, що виконується все можливе, щоб отримати від них максимальну продуктивність.

Ось лише деякі з удосконалень в цьому напрямку:

 

  • Додано багатоцільове націлювання для Roslyn 4.3 (#428, #462): генератори вихідних текстів MVVM Toolkit тепер використовуватимуть ціль Roslyn 4.3, якщо воно підтримується, щоб вони могли підключитися до деяких оптимізованих API, якщо хост це підтримує. Це автоматично вмикається при посиланні на MVVM Toolkit.
  • Використано ForAttributeWithMetadataName<T> (#436): було переключено генератори на новий високорівневий API Roslyn для зіставлення атрибутів, що значно покращує продуктивність генераторів, які спрацьовують за певними атрибутами. Наприклад, [ObservableProperty] тепер використовує це.
  • Перенесено діагностику в діагностичні аналізатори (#433, #434): перенесено майже всю діагностику в діагностичні аналізатори, які виконуються поза процесом і незалежно від генераторів джерел. Це значно зменшує накладні витрати при наборі тексту, оскільки вся логіка діагностики тепер виконується в окремому процесі й не може сповільнювати роботу IntelliSense.
  • Припинено використання символів у інкрементних провайдерах (#435): оновлено всі інкрементні провайдери, щоб більше не поширювати символи. Це може зменшити використання пам'яті, оскільки розповсюдження символів може призвести до того, що Roslyn надмірно викорінюватиме об'єкти компіляції.
  • Більше оптимізацій продуктивності (#447, #460, #469, #487, #489): переглянуто всі наші інкрементні моделі та інкрементні конвеєри, щоб значно покращити продуктивність та зменшити виділення пам'яті.

 

Розширення месенджерів IObservable<T> 

 

Ще однією функцією, яку просили розробники, особливо ті, що активно використовують API у стилі Reactive у своїх додатках, була можливість об'єднати функціональність API месенджерів у MVVM Toolkit. Тепер це підтримується завдяки новим розширенням IObservable<T> для інтерфейсу IMessenger. Ви можете використовувати їх наступним чином:
...І це все! Це розширення створить об'єкт IObservable<T>, який можна використовувати для підписки на повідомлення і динамічної реакції на них. Також підтримується вказівка різних токенів за допомогою окремих перевантажень. Ось ще один приклад, що демонструє наскрізне використання нового API:

Підтримка .NET 7 та C# 11 

Цей новий попередній випуск .NET Community Toolkit також додає .NET 7 TFM до пакета HighPerformance і містить кілька змін, що дозволяють скористатися новими можливостями мови C# 11, зокрема, полями посилань.

Наступні типи більше не знаходяться в режимі попереднього перегляду, вони були оновлені відповідно до нових правил безпеки арбітрів:
Приклад того, де вони можуть бути використані, наведений нижче:
Тобто, тип NullableRef<T> фактично дозволяє методу мати параметр out ref T, який не може бути виражений в C# іншим чином. Також планується розширити поверхню API цих типів у майбутньому, щоб ці типи могли надавати просту у використанні альтернативу GC-реф-арифметиці з використанням типу Unsafe, яка також може бути візуально більш схожою на традиційну арифметику з вказівниками.

Інші зміни 

У цьому новому випуску набагато більше!

Ви можете переглянути повний список змін на сторінці релізу на GitHub.

Почніть вже сьогодні! 

Ви можете знайти весь вихідний код у репозиторії GitHub, деякі рукописні документи на MS learn та повні посилання на API на вебсайт браузера .NET API. Щоб стежити за обговоренням у Twitter, використовуйте хештег #CommunityToolkit. Всі ваші відгуки дуже допомагають формувати напрямок розвитку цих бібліотек, тому обов'язково діліться ними!

Більше ресурсів 

Якщо ви хочете дізнатися більше про MVVM Toolkit, ви також можете переглянути це відео з останньої конференції .NET Conf Focus on MAUI, яка відбулася раніше в цьому році, де показано, як можна використовувати MVVM Toolkit і всі нові функції генератора вихідних кодів для створення MAUI-додатків:

Існує ціла екосистема доступних наборів інструментів з безліччю корисних API для створення .NET-додатків! Налаштуйтеся на майбутню конференцію .NET Conf 2022, щоб дізнатися більше!

Вдалого кодування! 





Exception: Stack empty.

Add comment


(Will show your Gravatar icon)

  Country flag

biuquote
  • Comment
  • Preview
Loading