Поиск по сайту:

Что нового в Visual Studio 2022?


Visual Studio 2022 теперь официально выпущена вместе с .NET 6, которую она поддерживает. Он включает в себя множество новых функций и улучшений, таких как AI IntelliCode, который может автоматически дополнять фрагменты кода для вас.

Вы можете загрузить установщик с их веб-сайта. Хотя он все еще новый, он все еще остается Visual Studio, поэтому, если вы не зависите от расширений, которые еще не были обновлены, не бойтесь попробовать.

Мы расскажем о самых важных изменениях, которые мы нашли, но если вы хотите прочитать построчные примечания к патчу, вы можете сделать это в документации Microsoft. Также есть дорожная карта, описывающая общее направление.

Наконец-то 64-битный

Visual Studio всегда была 32-разрядной, а это означает, что она была ограничена 4 ГБ ОЗУ в основном процессе. Обычно этот бюджет не выходит за рамки обычных проектов, но некоторые пользователи могут столкнуться с исключениями из-за нехватки памяти в особенно больших решениях.

В VS 2022 это исправлено, и теперь это 64-битное приложение. Microsoft протестировала проекты с 1600 проектами и 300 000 файлов, и все работает нормально.

Теоретически 64-разрядная версия должна работать быстрее, и время запуска кажется немного быстрее, но Microsoft также работает над производительностью в целом, поэтому трудно сказать, насколько это на самом деле влияет на нее. В любом случае, хорошее изменение.

Конечно, вы все еще можете разрабатывать 32-битные приложения с помощью VS 2022. Это относится только к редактору.

AI IntelliCode потрясающий

В Visual Studio 2022 реализовано серьезное обновление механизма автозаполнения IntelliCode. Он может автоматически дополнять целые строки и фрагменты кода, и работает очень хорошо.

Он немного отличается от Copilot на GitHub, который выполняет аналогичную работу. Copilot будет генерировать целые фрагменты кода и лучше всего подходит для небольших автономных функций с четким решением. Это здорово, но у него есть свои проблемы, в основном тот факт, что код, который он генерирует, не гарантируется даже тем, что вы хотите (и может извлекать код слово в слово из случайных репозиториев GitHub, что является совсем другой проблемой).

IntelliCode использует гораздо более ограниченный подход и просто завершает одну строку, принимая во внимание некоторые из следующих факторов:

  • Имена и позиции переменных
  • Библиотеки, которые вы используете
  • Функции в окружающем коде
  • Раскрывающийся список IntelliSense, в котором вы можете просмотреть дополнительные предложения IntelliCode

После двух недель использования это действительно то, что вы должны попробовать сами. Он потрясающе умен, и много раз, используя его, я ловил себя на мысли: «Вау, я как раз собирался это напечатать!»

Например, написание функции, которая принимает число от 1 до 12:

Чтобы понять и обеспечить этот результат, IntelliCode делает гораздо больше, чем просто синтаксис автозавершения; Он понимает, что я ожидаю исключения, что довольно очевидно, учитывая, что я печатаю «throw», и может понять, что это исключение генерируется только в том случае, если сравнение целочисленного размера не удается. Он знает, что Width — это аргумент, который проверяется перед запуском кода, и что я выбрасываю исключение, потому что с аргументом что-то не так.

Зная все это, он очень точно угадывает мои намерения и решает, что ArgumentOutOfRangeException должно быть тем, что я пытаюсь напечатать, еще до того, как я смогу начать вводить слово «новый».

И, если вы пролистнете вниз, вы можете заполнить результаты для разных вариантов. Это все еще немного непоследовательно (было решено жестко закодировать «Ширина», а затем использовать nameof), но в целом это работает хорошо.

IntelliCode работает все время, и все, что вам нужно сделать, это нажать табуляцию, чтобы принять его, в противном случае вы можете продолжать печатать. В настоящее время он работает только для C#, но «скоро появятся и другие языки».

Поддержка .NET 6

.NET 6 — это последняя версия. VS 2022 имеет встроенную поддержку для него и всех его функций, а для новых проектов по умолчанию используется .NET 6.

В частности, VS 2022 имеет полную поддержку .NET MAUI или многоплатформенного пользовательского интерфейса приложения, нового стандарта Microsoft для кроссплатформенной разработки собственных приложений.

Горячая перезагрузка .NET

Одна из самых раздражающих вещей в программировании — смотреть на свой экран, ожидая, пока ваше приложение скомпилируется и запустится, а также обновится с последними изменениями. Горячая перезагрузка — это функция многих других языков, таких как JavaScript, и используется такими веб-фреймворками, как React, для быстрого внесения изменений. Однако до сих пор не было стандартизированного решения для .NET.

Он не является полностью универсальным и требует специальной настройки проекта, но VS 2022 включает горячую перезагрузку для «предварительных просмотров WPF, Windows Forms, .NET MAUI, кода программной части приложений ASP.NET Core, консольных приложений, WinUI 3 и многих других». Это исключает библиотеки классов, используемые другим приложением.

Определенные типы изменений могут не применяться должным образом, поэтому вам будет предложено выполнить правильный перезапуск. Вы можете просмотреть их полный список здесь, но суть его такова:

  • Запрещено изменять сигнатуры методов
  • Не добавлять операторы using
  • Не изменять интерфейсы
  • Нельзя переименовывать участников любого типа

По сути, вы можете редактировать код любым способом, но как только вы начнете касаться структуры проекта, вам, возможно, придется перезапуститься.

Он хорошо интегрирован в процесс отладки VS с новым значком «Применить изменения кода», который запускает горячую перезагрузку. Вы также можете использовать новую команду dotnet watch для автоматической горячей перезагрузки при изменении файла.

Веб-приложения Razor/Blazor в настоящее время могут использовать горячую перезагрузку.

Удаленное тестирование

VS 2022 включает экспериментальную предварительную версию, которая позволяет запускать тесты в других средах, включая контейнеры Linux, WSL и даже по SSH.

У него есть небольшая настройка, и вам, конечно, нужно убедиться, что ваша среда настроена для правильного запуска вашего кода, но как только это будет сделано, вы сможете выбирать разные среды при запуске своих тестов.

Общие улучшения

В примечаниях к патчу есть много небольших изменений, поэтому мы перечислим некоторые из наиболее интересных здесь.

В отладке произошли некоторые улучшения качества жизни, с новыми параметрами контекста для более сложных точек останова, а также «Force Run To Cursor», который игнорирует все существующие точки останова и останавливается на выбранной вами строке кода. Это может быть очень полезно, если вы хотите что-то протестировать, не удаляя каждую точку останова или снова пропуская все вручную.

Интеграция VS с Git теперь поддерживает несколько репозиториев для каждого решения, а коммит во многих репозиториях теперь проще.

Все значки были переработаны для единообразия.

Комментарии XML теперь поддерживают многострочные комментарии с сохраненными пробелами и блоками CDATA.

«Найти все ссылки» больше не приводит к повторяющемуся выводу мусора в многоцелевом проекте.

Razor Pages/Blazor получили множество интеграций редактирования и теперь будут лучше работать с IntelliSense, подсветкой синтаксиса и улучшенным форматированием в блоках @code. Теперь вы также можете использовать «Просмотр кода» в файлах Razor, что некоторое время было раздражающим ограничением.

И есть еще несколько шаблонов проектов, в том числе приложения Angular и React, размещенные на ASP.NET Core, которые можно автоматически создавать с помощью интеграции API.

Полный список изменений можно найти в примечаниях к выпуску VS 2022.