Posted on 2. April 2024

Наздоганяй Microsoft Build 2024: Основні сесії для .NET розробників

Наздоганяй Microsoft Build 2024: Основні сесії для .NET розробників


На конференції Microsoft Build 2024 було представлено безліч інновацій та оновлень для .NET розробників. Якщо ви пропустили якусь із сесій, ми підготували для вас офіційний плейлист на YouTube, який охоплює все, що стосується .NET, C#, Visual Studio та багато іншого! Ось кілька основних моментів з плейлиста, які варто переглянути.

«Високотехнічна розмова» з Гансельманом і Тубом


https://youtu.be/TRFfTdzpk-M 


Приєднуйтесь до Скотта Хансельмана та Стівена Тоуба, щоб поговорити про 100% LIVE демонстрацію. Нуль слайдів, тільки код. У цій «високотехнічній доповіді» про внутрішню структуру .NET вони шукають проблеми з продуктивністю та виправляють їх наживо на сцені. Потім вони поглиблюють навички налагодження, продуктивності та оптимізації. Подивіться, як ми використовуємо власні інструменти для пошуку та усунення проблем. Якщо ви супер-просунуті, перейдіть на наступний рівень і подивіться, наскільки глибоко ви можете зайти! О, а також перегляньте серію відеороликів Deep .NET на YouTube для більш поглиблених тем. 


Максимум радості, мінімум зусиль, з чудовим досвідом розробника

https://youtu.be/JXZy_c2S3Z0 


Зосередженість на досвіді розробників лежить в основі того, що ми робимо в корпорації Microsoft.. Ландшафт змінюється, і програми, які ви створюєте, і надалі вимагатимуть переосмислення не лише того, які саме програми ви створюєте, але й того, як ви їх створюєте. Приєднуйтесь до Аманди Сілвер, яка розповість про останні зміни в інструментах для розробників і про те, як ми співпрацюємо в усьому технологічному спектрі, щоб створити наступне покоління сучасних програм, інтелектуальних програм.


Що нового в C# 13

https://youtu.be/O3hx6oPWzX8 


Приєднуйтесь до Мадса та Дастіна, щоб дізнатися про ключові можливості та покращення, які з’являться у C# 13. Цей рік приніс довгоочікувані нові можливості, такі як розширення і доступ до полів в автовластивостях, а також оновлений підхід до розбиття змін, щоб забезпечити більш чисту еволюцію мови в наступні роки. Крім того, ми виводимо вирази колекцій на новий рівень, полегшуючи створення словників та відкриваючи параметри для нових типів колекцій.


Розкрийте таємниці хмарної розробки за допомогою .NET Aspire 

https://youtu.be/jVILDZtuUrI 


Вивчіть революційний стек технологій .NET Aspire, призначений для хмарної розробки, разом з Девідом Фаулером та Деміаном Едвардсом. Вони розглянуть такі теми, як Orchestration, Components, Tooling та багато іншого.


Також не забудьте переглянути сесію про розробку .NET Aspire на будь-якій ОС за допомогою сімейства Visual Studio з Венді та Брейді.


AI + .NET

Було безліч чудових сесій, присвячених створенню ШІ-додатків за допомогою .NET. Однією з моїх улюблених була Learning AI зі Скоттом Хансельманом та Марком Русіновичем. Вони використовують інструменти ШІ, щоб допомогти створити додаток .NET MAUI, який використовує моделі ШІ як локально, так і в хмарі.


https://youtu.be/KKWPSkYN3vw 



Хочете більше AI? У нас є все, що вам потрібно:

Наповнення ваших .NET-додатків  AI

Створіть власний GPT за допомогою Blazor та .NET MAUI

Що нового в GitHub Copilot та Visual Sudio

Інновації в додатках в епоху  AI

Подолайте прірву між розробниками ML та додатків за допомогою Semantic Kernel

Створіть композитор контенту на основі  AI в Blazor за допомогою OpenAI GPT

Від нуля до героя – розробляйте свій перший додаток за допомогою Local LLM на Windows


.NET 9 в Microsoft Build

Минулого тижня вийшла попередня версія .NET 9 Preview 4, і в ній було багато чудових оновлень від команд, що працюють над .NET 9, про те, що з’явиться в .NET 9!


Покращення .NET MAUI: Якість, продуктивність та інтероперабельність .NET 9

EF Core 9: Еволюція Data Access в .NET

Modern Full-stack Web Dev with ASP.NET Core and Blazor

Що нового в WinForms в .NET 9

За лаштунками

Наша Медді Монтікілла побувала за лаштунками .NET TikTok на Microsoft Build 2024 та взяла інтерв’ю у ваших улюблених членів команди.


Підсумок

Конференція Microsoft Build 2024 була насичена цінними сесіями для .NET-розробників, присвяченими майбутнім розробкам, вдосконаленню мови, масштабованим архітектурам, стратегіям модернізації та інтеграції штучного інтелекту. Ці сесії мають вирішальне значення для того, щоб залишатися в курсі останніх тенденцій та технологій .NET. Щоб дізнатися більше та переглянути ці сесії, відвідайте офіційний плейлист .NET на Microsoft Build 2024.


Залишайтеся на зв’язку зі спільнотою .NET через офіційний канал .NET на YouTube та @dotnet на X, щоб бути в курсі останніх оновлень та ідей.



Posted on 9. July 2023

У .NET Community Toolkit 8.2.1 з’явилися покращені генератори вихідного коду та засоби виправлення коду!

 

Ми раді повідомити про офіційний запуск версії 8.2.1 .NET Community Toolkit! Ця нова версія містить багато покращень QoL у всіх бібліотеках, ще кілька оптимізацій продуктивності для генераторів джерел MVVM Toolkit, нові засоби виправлення коду та покращену діагностику тощо!


.NET Community Toolkit 8.2.1

Ми хочемо висловити особливу подяку всім членам спільноти, які надали цінні відгуки, щоб допомогти визначити пріоритетність завдань для цього нового випуску. Ваші внески та звіти про помилки допомагають нам робити .NET Community Toolkit ще кращим із кожним випуском — ви найкращі!

Що входить до складу .NET Community Toolkit?

.NET Community Toolkit містить такі бібліотеки:

CommunityToolkit.Common

CommunityToolkit.Mvvm(він же «Microsoft MVVM Toolkit»)

CommunityToolkit.Diagnostics

CommunityToolkit.HighPerformance

Щоб дізнатися більше про історію .NET Community Toolkit, ось посилання на нашу попередню публікацію оголошення про 8.0.0 .

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

Новий аналізатор і коректор коду для[RelayCommand] 

Атрибут [RelayCommand] (див. документацію тут) може автоматично обробляти асинхронні методи, і в цьому випадку він використовуватиме інтерфейси IAsyncRelayCommand (разом із відповідним типом асинхронної команди). Однак розробникам було нелегко виявити цю функцію, і багато хто натомість створював свої командні методи. Це також означало, що вони не могли використовувати всю додаткову функціональність, надану асинхронними командами (наприклад, звітування про прогрес і контроль паралельності).

Щоб допомогти з цим, версія 8.2.1 MVVM Toolkit постачається з абсолютно новим аналізатором, який випромінює діагностику для методів async void , позначених [RelayCommand]. А щоб зробити роботу ще простішою, є також новий засіб виправлення коду, який автоматично перероблятиме код за вас — просто клацніть піктограму лампочки, і дозвольте Roslyn зробити роботу за вас!

Виправлення коду аналізатора MVVM Toolkit

 

Тут ви можете побачити нову згенеровану діагностику, яка відображається для методу async void, пов’язаного з командою, і відповідного інтерфейсу коректора коду у Visual Studio з попереднім переглядом змін. Він також автоматично додасть необхідний оператор using у верхній частині вашого файлу, якщо Task ще немає в області видимості. І так само, як і інші засоби виправлення коду в MVVM Toolkit, ви також можете легко застосувати його до всіх місць у всьому вашому проєкті чи рішенні одним клацанням миші!

Інші зміни та вдосконалення

Виправлено аварійну ситуацію при індексації розрізаного екземпляра Memory2D (#675): у деяких випадках могло бути викликано порушення доступу під час індексування елементів після нарізання екземпляра Memory2D. Тепер це виправлено, дякуємо mahalex за повідомлення про це!

– Виправлено атрибути пересилання з від’ємними значеннями переліку (#681): використання елементів переліку з від’ємними значеннями більше не спричиняє проблеми з генераторами MVVM Toolkit для згенерованих спостережуваних властивостей. Дякуємо n-coelho-cerinnov за повідомлення про це!

Виправлено збій генератора під час пересилання недійсних атрибутів (#683): спроба переслати атрибути, на які є неправильні посилання, тепер завершуватиметься помилкою та створюватиме зрозуміле повідомлення про помилку.

Виправлення генератора  ObservableValidator для виявлення успадкованих властивостей (#616): генератор для перевірки властивостей більше не буде випадково ігнорувати властивості базових типів для цільової моделі перегляду. Дякуємо dgellow за повідомлення про це!

Додано попередження під час використання packages.config для MVVM Toolkit (#695): генератори набору інструментів MVVM працюють лише під час використання (це відоме обмеження SDK, і воно є задумом), але раніше не було чітких вказівок на те, чому генератори не працювали для користувачів, які намагаються використовувати їх із проекту за допомогою packages.config. MVVM Toolkit тепер постачається з покращеною діагностикою, яка створить корисне попереджувальне повідомлення в цьому випадку. Дякуємо, smaugbend , що повідомили про це!

Частіше перевіряйте скасування в генераторах (#703): це має призвести до невеликих покращень у чутливості IDE під час використання MVVM Toolkit.

 

Видалення непотрібного тимчасового розподілу масиву (#719): ще одна невелика оптимізація пам’яті для генераторів джерел MVVM Toolkit.

Обробка поля [ObservableProperty] з ідентифікаторами ключових слів (#710): генератор більше не створюватиме недійсний код у випадку, якщо поля анотовані [ObservableProperty] використовують ідентифікатори ключових слів, які були екрановані у джерелі (наприклад, @event). Дякуємо Get0457 за повідомлення про це!

 

Примітка: існує відома проблема з джерельними генераторами в старіших версіях Roslyn, через яку IntelliSense іноді може не працювати належним чином для згенерованих учасників (див. #493 і пов’язану проблему відстеження Roslyn). Це нарешті виправлено у VS 2022 17.7, який зараз знаходиться в прев’ю. Якщо ви бачите будь-які проблеми під час використання MVVM Toolkit, обов’язково спробуйте останню версію VS 17.7 Preview!

Інші зміни

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

Почніть сьогодні!

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

 

Щасливого кодування!

Source




Posted on 7. May 2023

Анонсуємо нову версію .NET Upgrade Assistant з підтримкою .NET MAUI та Azure Functions!

та

 

Ми раді повідомити, що ми випустили нову версію .NET Upgrade Assistant у Visual Studio, яка робить ваше оновлення до найновішої версії .NET framework ще простішим!


.NET Upgrade Assistant - це інструмент, який допоможе вам оновити ваш додаток до найновішої версії .NET та перейти зі старих платформ, таких як Xamarin Forms та UWP, на новіші пропозиції. У лютому ми випустили розширення Visual Studio для цього інструменту, а зараз вийшла нова версія з багатьма покращеннями та новими функціями. Переконайтеся, що у вас увімкнено автоматичне оновлення для цього інструменту, щоб отримати найкращі результати. У Visual Studio | Extensions | Manage Extensions знайдіть .NET Upgrade Assistant у розділі Installed і переконайтеся, що позначку Автоматично оновлювати це розширення встановлено. Запустіть Visual Studio від імені адміністратора, щоб внести ці зміни, якщо потрібно.

 

Що нового в цій версії

Ми раді повідомити, що в цьому випуску додано підтримку нових сценаріїв для різних платформ, фреймворків тощо! Ось деякі з нових покращень:

 

  • Підтримка .NET 8.
  • Оновлення з Xamarin.Forms до .NET MAUI.
  • Оновлення для функцій Azure.
  • Оновлення з UWP на WinUI.
  • Підтримка ARM64.

Оновлення та вдосконалення

Ця версія також включає декілька удосконалень, про які просили розробники і які покращують загальний досвід використання .NET Upgrade Assistant:

 

  • Покращено спосіб оновлення пакунків NuGet за допомогою Помічника з оновлення.
  • Оновлений сценарій Incremental для використання YARP 2.0.
  • Покращено обробку помилок, тепер всі збої та попередження можна побачити у вікні прогресу для кожного компонента проекту.
  • Численні інфраструктурні оновлення рушія інструменту, які покращили продуктивність та загальну якість оновлень.
  • Підтримка проектів у стилі SDK, які використовують System.Web. Раніше веб-проекти, які були вручну перетворені в SDK-стиль, але все ще використовували System.Web, не могли бути оновлені інкрементально і розглядалися як проекти сімейства Core. Тепер Upgrade Assistant розглядає їх як проекти .NET Framework і дозволяє оновлювати їх поетапно, що є найкращим способом оновлення веб-додатків з .NET Framework до найновіших версій .NET.
  • WinForms - додано обробку для випадків, коли певні API зі старої версії не підтримуються в новій версії .NET.
  • ASP.NET - додано покращення щодо того, як проекти оновлюються за лаштунками.

 


Детальніше про оновлення до .NET 6, 7, 8

У попередній версії Помічника з оновлення, коли ви вибирали оновлення з .NET Core або новішої версії до .NET 6, 7 або 8, Помічник з оновлення оновлював лише цільовий фреймворк. Тепер він також оновлює всі пакунки, на які посилається ваша програма, до цілісного набору пакунків, що відповідає цільовій .NET.


Ось як працює оновлення пакунків:

 

  • Для стандартних пакетів середовища виконання .NET або пакетів ASP.NET Core буде встановлено останню версію відповідного цільового фреймворку 6, 7 або 8. Наприклад, якщо ви оновлюєте свій додаток до .NET 6, ви отримаєте відповідну версію пакета для .NET 6, а якщо ви оновлюєте його до .NET 8, ваші пакети будуть оновлені до останніх передрелізних версій.
  • Для всіх інших пакунків інструмент перевіряє, чи пакунок вже підтримує цільовий фреймворк, у такому випадку пакунок залишається незмінним. Якщо ні, інструмент перевірить, чи остання версія пакунка підтримує цільовий фреймворк, до якого оновлюється програма. Якщо навіть остання версія пакунка не підтримує цільовий фреймворк, цей пакунок буде вилучено.
Ще одна нова функція - підтримка оновлень Preview: тепер ви можете оновити стару версію Preview до найновішої.

 


Оновлення з Xamarin.Forms на .NET MAUI

Тепер ви можете оновити ваші існуючі додатки Xamarin.Forms до наступника Xamarin - .NET MAUI.

У порівнянні з Xamarin.Forms, .NET MAUI має багато переваг та покращень, таких як:

 

  • єдиний проект для спрощення управління активами, управління NuGet та використання багатоцільового таргетингу.
  • багатовіконна підтримка сценаріїв для настільних комп'ютерів та планшетів
  • перебудований макет для покращення зручності супроводу, продуктивності та виправлення багатьох особливостей, присутніх у Xamarin.Forms.
  • Конструктор додатків для стандартизації завантаження додатків за загальним шаблоном .NET
  • Відокремлення платформи від крос-платформних елементів керування
  • Шаблон багаторівневого рендерингу над новими обробниками
  • Рефакторинг реалізацій Shell

 

та багато іншого. Ви можете прочитати документацію по .NET MAUI для більш детальної інформації.

Щоб оновити ваш додаток Xamarin.Forms до .NET MAUI:

 

  • У Visual Studio в Solution Explorer клацніть правою кнопкою миші на одному з ваших проектів і виберіть Upgrade. Вам потрібно встановити розширення Upgrade Assistant Visual Studio, щоб побачити опцію Upgrade. Ви можете почати з будь-якого проекту у вашому рішенні; вам потрібно буде оновити всі проекти, щоб ваш додаток зібрався.

 

 


 

  • Ви побачите головну сторінку з кількома варіантами оновлення.

 

  • Виберіть In place, якщо ви хочете оновити ваш оригінальний проект, або Side-by-side, якщо ви хочете створити новий проект MAUI поруч з вашим оригінальним проектом і залишити оригінальний проект без змін.
  • Дотримуйтесь кроків оновлення. Якщо у вас немає причин для поступового оновлення деяких частин вашого проекту, залиште всі позначки, які пропонує інструмент, і виконайте оновлення.
  • Повторіть це для кожного проекту вашого рішення.
  • Після завершення оновлення ви побачите, що інструмент змінив файли проекту, оновив посилання та вніс інші необхідні зміни. Створіть і запустіть ваші програми. Якщо виникнуть будь-які інші помилки, вам доведеться виправити їх вручну.
Примітка: для перетворень файлів .xaml Помічник оновлення включає базові заміни просторів імен. Для більш складних перетворень .xaml-файлів потрібна Visual Studio 17.6.

 

Оновлення для Azure Functions

Azure Functions - це безсерверна обчислювальна платформа, яка дає змогу запускати код без резервування або керування інфраструктурою. Існує чотири основні версії Azure Functions: 1.x, 2.x, 3.x і 4.x. Кожна версія має свій набір функцій і можливостей.

 

  • Версія 1.x - це найстаріша версія Azure Functions. Вона більше не підтримується і не повинна використовуватися для нових розробок.
  • Версія 2.x була випущена у 2017 році. Це значне оновлення порівняно з версією 1.x, яке включає низку нових функцій, зокрема підтримку декількох мов, покращену продуктивність і гнучкішу модель розгортання.
  • Версія 3.x була випущена в 2018 році. Це незначне оновлення порівняно з версією 2.x, яке включає кілька нових функцій, зокрема підтримку Azure Durable Functions і поліпшену інтеграцію з Azure Event Grid.
  • Версія 4.x була випущена в 2020 році. Це значне оновлення порівняно з версією 3.x, яке включає низку нових функцій, зокрема підтримку .NET 6, покращену продуктивність і більш безпечну архітектуру.

 

Також різні версії функцій Azure підтримуються в різних версіях .NET. У наступній таблиці наведено основні відмінності між різними версіями Azure Functions:

Під час оновлення проекту Azure Functions до останньої версії .NET інструмент автоматично оновить версію Azure Functions до ізольованої версії , оскільки це найкраща та рекомендована версія.

Ви можете оновити проект Azure Functions так само, як і будь-який інший проект, клацнувши правою кнопкою миші на проекті в Провіднику рішень, вибравши опцію Upgrade й дотримуючись вказівок інструмента.


Окрім оновлення файлу проекту до останньої версії .NET і версії Azure Functions, тіло функцій також оновлюється, щоб використовувати нові API.

Ви можете прочитати більше про функції Azure в документації.


Ідемо далі

Далі ми зосередимося на покращенні якості оновлень, стабілізації інструменту, усуненні існуючих помилок та ваших відгуках.


Ми також працюватимемо над оновленням існуючого CLI-інструменту, щоб він працював з тим самим рушієм, що й розширення Visual Studio. Таким чином, інструмент CLI матиме всі нові можливості, які є у VSIX, тож ви зможете обирати між Visual Studio та CLI.


Дізнайтеся, як оновити версію

У автора є багато матеріалів, які допоможуть вам у процесі оновлення:

 

 


Feedback!

Будь ласка, надішліть команді свій відгук, щоб вони могли створити правильні інструменти для вас, заповнивши це коротке опитування.


Ви також можете надсилати проблеми або запити щодо можливостей Visual Studio, вибравши Довідка | Надіслати відгук. У темі листа обов'язково зазначте "Upgrade Assistant vsix". 



 



Exception: Collection was modified after the enumerator was instantiated.
Posted on 30. April 2023

Анонсуємо .NET Community Toolkit 8.2! Покращена швидкість роботи генераторів, засоби для усунення помилок у коді, збільшення продуктивності та багато іншого!

 

 

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

.NET Community Toolkit 8.1.0 Preview 1

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

Інструментарій .NET Community Toolkit містить наступні бібліотеки:

  • CommunityToolkit.Common

  • CommunityToolkit.Mvvm (також відомий як “Microsoft MVVM Toolkit”)

  • CommunityToolkit.Diagnostics

  • CommunityToolkit.HighPerformance

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

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

 

Перелік основних змін, які включені в нову версію 8.2 інструментарію .NET Community Toolkit.

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

Продовжуючи роботу, виконану у випуску 8.1.0, і як було запропоновано на GitHub, новий випуск 8.2.0 набору інструментів MVVM Toolkit містить підтримку користувацьких атрибутів при використанні [RelayCommand]. Знову ж таки, було використано нативне field: і property: C#, щоб вказати цільові значення користувацьких атрибутів. Завдяки цьому ви тепер маєте повний контроль над атрибутами для всіх згенерованих членів, коли використовуєте [RelayCommand] для створення команди MVVM.

Наприклад, це особливо корисно, коли ви використовуєте модель подання, яка має підтримувати серіалізацію JSON, і вам потрібно явно ігнорувати згенеровану властивість. Ви можете використовувати підтримку нового  field: і property: наступним чином:

Після цього будуть створені наступні елементи:

Як і слід було очікувати, згенерована властивість DoWorkCommand має вказаний атрибут над нею! І, звичайно ж, підтримуються атрибути з будь-якою кількістю конструкторів та іменованих параметрів. Ви також можете використовувати просто field:, property:  поле:або будь-яку їх комбінацію 🙌

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

Нові змінені перехоплення [ObservableProperty] ⚗️

Відносно поширеним сценарієм у MVVM є наявність деякої властивості “вибраний елемент”, яка представляє, наприклад, поточного вибраного користувача або вкладену модель представлення. Коли значення цієї властивості змінюється, нерідко доводиться вносити певні корективи до старого та нового екземплярів. Наприклад, встановити якусь “вибрану” властивість, або підписатися на подію, і так далі.

Раніше це був сценарій, де використання [ObservableProperty] не було ідеальним, оскільки воно не мало необхідної інфраструктури, щоб легко впровадити таку логіку для виконання необхідних змін стану для старих і нових значень, що встановлюються. Щоб виправити це, починаючи з версії 8.2 MVVM Toolkit, для всіх полів [ObservableProperty] генеруються два нові змінені перехоплення властивостей.

 

Наприклад, розглянемо наступний код:

Тепер буде згенеровано такий код:

Зверніть увагу на два нові методи “OnPropertyNameChanging” і “Changed”, що генеруються, тепер вони також приймають попереднє значення. Ці два методи є простими у використанні перехопленнями для додавання коду, який спрацьовує при кожній події зміни властивості й може змінювати як старе, так і нове значення, що встановлюється. Наприклад, ви можете використовувати їх наступним чином:

І це все, що вам потрібно! Вибрана модель перегляду тепер завжди буде коректно повідомлятися як вибрана. Вам більше не потрібно повертатися до використання ручної властивості у подібних сценаріях, [ObservableProperty] тепер має вбудовану підтримку і для цього! 🪄

Примітка: MVVM Toolkit автоматично визначить, чи використовуєте ви будь-який з цих методів, щоб максимально оптимізувати кодову структуру. Крім того, виклики методів, які не реалізовані, будуть просто видалені компілятором Roslyn, тому вся ця функція є повністю платною!

Фіксери коду MVVM Toolkit 📖

У попередньому випуску MVVM Toolkit було додано два нових діагностичних аналізатора, які видають попередження при некоректному доступі до поля, позначеного [ObservableProperty], а також при оголошенні типу з [ObservableProperty] і подібними атрибутами, коли доступне використання наслідування. У версії 8.2 ці два аналізатори також містять вбудовані засоби для виправлення коду!

Тобто, коли будь-який з них видає попередження, ви можете просто навести курсор на лампочку IntelliSense, вибрати виправлення коду й автоматично застосувати всі необхідні зміни, щоб повернути ваш код до правильного вигляду! Вони також підтримують групові виправлення, тому ви можете виправити всі помилки одним клацанням! ✨

MVVM Toolkit analyzer code fix

Тут ви можете побачити новий інтерфейс виправлення коду у Visual Studio з попереднім переглядом змін, а також опціями застосування виправлення до потрібного вам діапазону

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

Як і кожен випуск, MVVM Toolkit 8.2 також включає деякі покращення продуктивності генераторів вихідних кодів. Цього разу основна увага була приділена оптимізації інкрементних конвеєрів, щоб мінімізувати використання пам’яті й гарантувати, що жодні непотрібні об’єкти не залишаться активними під час паралельних виконань. Ось деякі зміни, які було зроблено для покращення цього:

  • Перенесено решту діагностик до аналізаторів (#581): ще дві діагностики з MVVM Toolkit було перенесено до діагностичного аналізатора, який можна запускати паралельно та поза процесом. Це вилучає деякі символи Roslyn з інкрементального конвеєра та покращує загальну продуктивність генератора.

  • Попередня обробка символів на початку роботи аналізаторів (#587): усі необхідні символи аналізатора тепер обробляються під час початкового налаштування зворотного виклику, що пришвидшує його виконання у кожному екземплярі компіляції.

Інші зміни та покращення 🚀

  • Виправлено помилку збірки з VB.NET проєктів (#592): MVVM Toolkit спричиняв помилки збірки з VB.NET проєктів через деякі некоректні властивості MSBuild. Наразі це виправлено.

  • Виправлено перенаправлені параметри подвійних атрибутів (#603): перенаправлені атрибути через [ObservableProperty] некоректно відображали цілі значення типів float та double у тип int. Тепер вони передаватимуться коректно зі збереженням початкового типу.

  • Виправлено генератори вихідного коду, що обробляють вкладені/загальні типи (#606): виправлено проблему, яка призводила до збою декількох генераторів вихідного коду при використанні Roslyn 4.0 та загальних типів.

  • Додано API ArrayPoolBufferWriter.DangerousGetArray() (#616): цей новий API дозволяє легко взаємодіяти між ArrayPoolBufferWriter та старими API, які вимагають масив T[] як параметр (на відміну від Span/Memory).

  • Вилучено System.Linq з CommunityToolkit.Diagnostics (#622): за результатами дослідження, проведеного у runtime/#82607, з пакунка Diagnostics повністю вилучено всі посилання на System.Linq. Це покращує підтримку обрізання у збірці та дозволяє заощаджувати більший розмір двійкових файлів у опублікованих збірках (особливо з NativeAOT).

  • Підтримка часткових методів з [RelayCommand] (#633): атрибут [RelayCommand] тепер працюватиме коректно, якщо його буде додано над визначенням або частиною реалізації часткового методу.

  • Додано підтримку відкритих узагальнених типів у ToTypeString (#639): розширення Type.ToTypeString() тепер коректно обробляє відкриті узагальнені типи. Наприклад, typeof(List<>).ToTypeString() тепер повертатиме “System.Collections.Generic.List<>”.

  • Додано [MemberNotNull] у встановлювачах [ObservableProperty] (#646): коли це застосовано (тобто коли атрибут є доступним і тип властивості не можна занулити), генератор [ObservableProperty] також генеруватиме необхідні анотації про можливість занулення, щоб гарантувати, що встановлення створеної властивості коректно позначить поля як ініціалізовані. Це розв’язує проблему полів, які показували попередження про недопустимість, навіть якщо згенеровану властивість було встановлено.

  • Повні XML-документи для згенерованих членів (#653): усі згенеровані типи та члени тепер оформлено у вигляді повних XML-документів, тож перевірка коду, створеного генераторами вихідного коду MVVM Toolkit, має бути дещо простішою, ніж раніше.

Примітка: у старих версіях Roslyn існує відома проблема з генераторами вихідних кодів, через яку IntelliSense може іноді працювати некоректно для згенерованих елементів (див. #493 і пов’язану з ним проблему відстеження у Roslyn). Ця проблема має бути в основному виправлена в VS 2022 17.6 і вище (або, коли використовується Roslyn 4.6, в тому числі через інші IDE, такі як VS Code і Rider). Якщо ви зіткнулися з цією проблемою, переконайтеся, що ви оновили свій інструментарій до останньої доступної версії.

Інші зміни ⚙️

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

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

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

 

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



Posted on 20. February 2023

Оновлення .NET проектів за допомогою Visual Studio

Оновлення .NET проектів за допомогою Visual Studio

 

Тепер ви можете оновити будь-яку .NET програму до останньої версії .NET прямо з Visual Studio! Ми раді представити його як розширення Visual Studio, яке дозволить оновити ваші веб- та десктопні додатки на базі .NET Framework або .NET Core. Деякі типи проектів знаходяться в розробці і будуть доступні найближчим часом, дивіться деталі нижче.

 

Навіщо оновлюватись і до якої версії?

 

Якщо ваші програми розроблені на .NET Framework або .NET Core, зараз чудовий час оновити їх до .NET 6 (версія з довгостроковою підтримкою) або .NET 7 (версія зі стандартною підтримкою), які мають набагато кращу продуктивність і надають доступ до найновіших функцій та можливостей. Між .NET Framework та останньою версією .NET відбулися величезні покращення, але навіть якщо ви використовуєте .NET Core 3.1 або більш ранню версію, її підтримка закінчується в грудні 2022 року.

 

The author recommends porting to .NET 6 or .NET 7!

 

Між цими двома версіями .NET 6 має довший час підтримки, а .NET 7 є найновішою, тому має новіші функції. Ми випускаємо нову версію .NET щороку в листопаді, і кожна парна версія підтримується протягом 3 років (довгострокова підтримка, або скорочено LTS). Таким чином, ви можете або залишатися на найновіших передових технологіях і оновлюватись щороку, або переходити з LTS на LTS раз на 2-3 роки.

 

Про Upgrade Assistant

 

Оновлення додатку, особливо з .NET Framework, було складним процесом. Команда продовжує створювати прототипи та вдосконалюватися в цій галузі, щоб спростити оновлення. У минулому ви могли використовувати інструмент Upgrade Assistant CLI або Microsoft Project Migrations. Ваші відгуки було зібрано, велика подяка всім, хто заповнив опитування або залишив коментарі, створив проблеми і запити функцій! Враховуючи ваші відгуки, команда дійшла висновку, що необхідно забезпечити уніфікований досвід оновлення для всіх типів проектів у Visual Studio.

 

Тепер ви зможете оновити будь-який тип .NET-додатків з будь-якої початкової версії (.NET Framework або .NET Core), клацнувши правою кнопкою миші на вашому проекті в Solution Explorer і вибравши “Оновити”. Не забудьте спочатку встановити розширення.


Загальна філософія Upgrade Assistant полягає в тому, що він подбає про механіку, але залежно від того, з якого фреймворку і типу проекту ви оновлюєтесь, вам слід очікувати, що вам доведеться виконати деяку ручну пост-обробку. Хоча команда намагається автоматично виправляти зміни, що порушують роботу фреймворку, він не може виявити і виправити всі з них. Тому вам може знадобитися внести деякі додаткові зміни, щоб змусити код компілюватися, а також ретельно протестувати, щоб переконатися, що ваш код продовжує працювати належним чином.

 

Підтримувані типи програм

Ми прагнемо підтримувати кожен тип .NET проектів. Крім того, ми розглядаємо цей інструмент не лише як одноразове оновлення з .NET Framework до .NET 6/7, але й як спосіб оновити ваш додаток до найновішої версії .NET у майбутньому. Окрім зміни цільової версії фреймворку, інструмент зможе модифікувати ваш код, щоб виправити непрацюючі зміни. Це наші плани на майбутнє, а наразі ось що підтримується інструментом в останній версії:


ASP.NET

Class libraries

Console

WPF

WinForms

 

Ці робочі навантаження є паритетними з інструментом Upgrade Assistant CLI.



Незабаром: 

Міграція з Xamarin на .NET MAUI

Міграція з UWP на WinUI

Міграція WCF на WCF Core


Ці типи міграції знаходяться в розробці, і ви вже можете оновити ці проекти, але у команди ще немає виправлень коду для цих проектів. Якщо вам потрібно перенести ці типи проектів сьогодні, рекомендовано скористатися наявним інструментом командного рядка Upgrade Assistant, який вже має виправлення коду. Розширення Visual Studio також незабаром отримає їх.


Різні типи оновлень

Помічник з оновлення підтримує 3 типи оновлень. Різні типи рекомендуються для різних типів проектів, тому ви побачите лише ті варіанти, які підійдуть для вашого додатку.

In-place. У цьому випадку ваш оригінальний проект буде оновлений одразу. Якщо ви використовуєте контроль вихідних текстів і віддаєте перевагу самостійному управлінню копіями, наприклад, за допомогою гілок, цей варіант для вас.

Side-by-side. За допомогою цієї опції ваш оригінальний проект не буде змінено, а до рішення буде додано його копію, яка міститиме оновлений код. Цей тип може бути зручним, якщо ваш додаток має багато залежностей, які можуть бути порушені після оновлення. Таким чином ви можете відстежувати прогрес і не турбуватися про те, що додаток не збирається.

Side-by-side incremental. Це ідеальний вибір для веб-додатків. Оновлення з ASP.NET на ASP.NET Core вимагає багато роботи, а іноді і ручного рефакторингу (тому що ці дві технології дуже відрізняються). Бібліотеки класів часто використовуються разом з веб-додатками, тому ми надаємо такий тип оновлення і для бібліотек класів. Інкрементне оновлення розмістить проект .NET 6/7 поруч з вашим існуючим проектом .NET Framework і спрямує туди кінцеві точки, які реалізовані в проекті .NET 6/7, в той час як всі інші виклики будуть надсилатися до додатку .NET Framework. Таким чином, ви можете поєднати оновлення з розробкою нових функцій і перенести елементи на .NET 6/7 один за одним, не порушуючи роботу вашого додатку. Цей підхід був спочатку реалізований в інструменті Microsoft Project Migrations, ви можете розглядати Upgrade Assistant у Visual Studio як нову покращену і розширену версію Microsoft Project Migrations. Оновлення з .NET Core або .NET 5 до .NET 6/7 набагато простіше, ніж з .NET Framework, тому для таких випадків рекомендується використовувати опцію In-place.

 

У таблиці нижче ви можете знайти статус усіх типів оновлень за типами проектів.


In-place

Side-by-side

Side-by-side incremental

ASP.NET from .NET Framework

N/A

N/A

supported

ASP.NET from .NET Core, .NET5+

supported

N/A

N/A

WinForms from .NET Framework

supported

supported

N/A

WinForms from .NET Core, .NET5+

supported

N/A

N/A

WPF from .NET Framework

supported

supported

N/A

WPF from .NET Core, .NET5+

supported

N/A

N/A

Class Library from .NET Framework

supported

supported

supported

Class Library from .NET Core, .NET5+

supported

N/A

N/A

Console from .NET Framework

supported

supported

N/A

Console from .NET Core, .NET5+

supported

N/A

N/A

Xamarin to MAUI

in development

in development

N/A

MAUI from older versions

in development

N/A

N/A

UWP to WinUI

in development

in development

N/A

WinUI from older versions

in development

N/A

N/A

Azure Functions

in development

N/A

N/A

WCF to WCF Core

in development

N/A

N/A


Покрокове оновлення

1. Встановіть розширення Upgrade Assistant Visual Studio.

2. У Visual Studio в Solution Explorer натисніть правою кнопкою миші на проекті, який ви хочете оновити, і виберіть Upgrade.

3. Ви побачите головну сторінку з кількома варіантами оновлення.

Який варіант вибрати, описано в різних типах оновлень.

4. Для цього прикладу я обираю In-place. Side-by-side буде дуже схожим з кількома додатковими кроками. Додаткові можливості side-by-side incremental описані в попередньому пості в блозі.

 

5. Потім вам потрібно вибрати фреймворк, на який ви хочете перейти. Інструмент запропонує лише ті варіанти, які мають сенс для вашого типу проекту. У моєму прикладі це бібліотека класів .NET Framework, тому він також запропонує .NET Standard.

Всі оновлення є прямими, тобто якщо ваш проект, наприклад, вже працює на .NET 6, буде запропоновано лише .NET 7 і новіші версії. Якщо на вашому комп’ютері не встановлено обраний SDK, вам буде запропоновано встановити його на наступному кроці. Просто перейдіть за посиланням і поверніться до оновлення після встановлення SDK. .NET Standard пропонується лише для бібліотек класів, які були орієнтовані на .NET Framework.

6. Настав час вибрати компоненти, які ви хочете оновити. Зрештою, вам потрібно буде оновити все, але якщо ви віддаєте перевагу поетапному оновленню, на цьому екрані ви можете вибрати, з чого ви хочете почати.

7. Після натискання кнопки Upgrade selection ви побачите хід оновлення і звіт після його завершення.

 

Підсумок

Тепер ви можете оновлювати свої .NET проекти прямо з Visual Studio.


Source



Posted on 23. January 2023

Анонс .NET Community Toolkit 8.1! Покращені, швидші генератори вихідного коду MVVM, підтримка .NET 7 та багато іншого!



Анонс .NET Community Toolkit 8.1! Покращені, швидші генератори вихідного коду MVVM, підтримка .NET 7 та багато іншого!

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

 

Що входить до складу .NET Community Toolkit? 

Як і в інших анонсах, розпочнемо з невеликого огляду того, що входить до складу інструментарію .NET Community Toolkit. Він складається з декількох незалежних бібліотек:

Ці бібліотеки також широко використовуються у деяких програмах для роботи з поштою, які входять до складу Windows, зокрема у Microsoft Store та програмі "Фотографії"! 

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

 

Нижче наведено перелік основних змін, які включено до нового випуску 8.1 інструментарію .NET Community Toolkit.

Користувацькі атрибути для [ObservableProperty] (Властивість, що спостерігається) 

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

1. Він використовує вбудований синтаксис C#, що робить властивість "рідною" і не потребує додаткових атрибутів

2. Це розв'язує проблему анотування атрибутів, які можуть бути спрямовані лише на властивості, а не на поля

 

Тобто, у MVVM Toolkit 8.1 тепер підтримується наступний сценарій:

Це призведе до створення наступної властивості за замовчуванням: