Логотип 2022Logo Заметки о выпуске Visual Studio 2022 версии 17.0


Совет

просмотрите записи события Visual Studio 2022 , чтобы узнать о новых возможностях, услышать советы & приемы и загрузить бесплатные цифровые сущность.

Сообщество разработчиков | Дорожная карта Visual Studio 2022 | Требования к системе | Совместимость | Распространяемый код | Условия лицензии | Блоги | Известные проблемы в последнем выпуске | Новые возможности в документации по Visual Studio


Нажмите кнопку, чтобы скачать последнюю версию Visual Studio 2022. инструкции по установке и обновлению Visual Studio 2022 см. в статье обновление Visual Studio 2022 до последней версии. Кроме того, см. инструкции по установке в автономном режиме.

Download Community Button Download Professional Button Download Enterprise Button

посетите страницу visualstudio.microsoft.com/downloads , чтобы скачать другие продукты Visual Studio 2022.

Новые возможности Visual Studio 2022 версии 17.0

Выпуски Visual Studio 2022 версии 17.0

Блог Visual Studio 2022

Блог Visual Studio 2022 является официальным источником сведений о продукте от группы разработчиков Visual Studio. Более подробные сведения о выпусках Visual Studio 2022 можно найти в следующих записях:


17.0.4 Visual Studio 2022 версии 17.0.4

выпущено 16 декабря 2021 г.

Проблемы, устраняемые в этом выпуске 17.0.4

  • Добавляет поддержку Xcode 13,2.

17.0.3 Visual Studio 2022 версии 17.0.3

Дата выпуска: 14 декабря 2021 г.

Проблемы, устраненные в выпуске 17.0.3

Отрисовка управляющих символов двунаправленного текста

Для предотвращения нежелательного использования кода, ведущего к его искажению, в редакторе Visual Studio отменена возможность управляющих символов двунаправленного текста управлять порядком символов в области редактирования. Новый параметр будет отображать эти управляющие символы двунаправленного текста в виде заполнителей. Управляющие символы двунаправленного текста по-прежнему останутся в коде, так как это поведение влияет только на выводимые в редакторе кода данные.

VS с управляющими символами двунаправленного текста, замененными на заполнители

Управлять этой функцией можно в меню "Сервис — Параметры". Параметр "Показать управляющие символы двунаправленного текста" на странице "Текстовый редактор — Общие" будет выбран по умолчанию. Если этот параметр выбран, все управляющие символы двунаправленного текста будут выводиться в виде заполнителей. Если снять флажок с этого параметра, произойдет возврат предыдущего поведения, когда эти символы не выводились.

Символ Юникода считается управляющим символом двунаправленного текста, если он попадает в любой из следующих диапазонов: U+061c, U+200e–U+200f, U+202a–U+202e, U+2066–U+2069.

  • Исправлен сбой конструктора веб-форм
  • Исправлена проблема, при которой заполнение CSS для правила !important вставляло текст в неправильном расположении в файлах HTML или Razor.
  • Исправлена регрессия проблемы в Xamarin.Forms, при которой Горячая перезагрузка XAML конфликтовала с библиотеками похожих зависимостей, например SignalR. Теперь Горячая перезагрузка XAML в Xamarin.Forms исправно функционирует независимо от содержимого, загруженного в ваше приложение.
  • Исправлена проблема, при которой страницы обзора проекта и окна средств диагностики и профилировщика производительности иногда выводились пустыми.
  • Исправлена проблема при редактировании файла Razor, когда курсор резко изменял расположение во время ввода текста.

От сообщества разработчиков

В Сообществе разработчиков приводится полный список исправлений, доступных в версии 17.0.

Советы по безопасности

CVE-2021-43877 Уязвимость .NET В модуле ASP.NET Core существует уязвимость несанкционированного повышения привилегий при размещении приложений .NET Core, .NET 5 и .NET 6 в IIS.

CVE-2021-42574 Уязвимость двунаправленного текста Управляющие символы двунаправленного текста могут быть использованы для отображения кода в редакторе иным образом, чем записано на диске.


17.0.2 Visual Studio 2022 версии 17.0.2

Дата выпуска: 30 ноября 2021 г.

Проблемы, устраненные в выпуске 17.0.2

  • Исправлено автоматическое некорректное создание кода с помощью операций наподобие memmove с перекрывающимися данными
  • В окне вывода добавлены сообщения, которые появляются при использовании модулей или блоков заголовков C++. Они предупреждают об известных проблемах, связанных с использованием модулей или блоков заголовков с IntelliSense.
  • Устранена проблема, приводящая к зависанию обзорных страниц CMake и редактора CMakeSettings во время ожидания завершения инициализации IntelliSense.
  • Устранена проблема, из-за которой экземпляр шаблонного деструктора в иерархии классов с инициализаторами элементов данных мог создаваться слишком рано, что могло приводить к неправильной диагностике использования неопределенных типов или другим ошибкам.
  • В рабочую нагрузку Python добавлена версия Python 3.9.7. Версия Python 3.7.8 удалена из-за уязвимости системы безопасности.
  • Исправлена проблема, из-за которой при использовании команд "Найти далее" (F3) и "Найти следующий выделенный фрагмент" (CTRL+F3) иногда выполнялся переход к первому вхождению в файле, а не к следующему вхождению.
  • Устранена проблема, из-за которой при отображении дат в пользовательских интерфейсах управления версиями не учитывался языковой стандарт операционной системы клиента.
  • Устранена проблема в Windows 11, из-за которой при использовании Терминала Windows по умолчанию отладчик не мог корректно остановить отладку консольного приложения, что делало невозможным последующие запуски.

От сообщества разработчиков

В Сообществе разработчиков приводится полный список исправлений, доступных в версии 17.0.


17.0.1 Visual Studio 2022 версии 17.0.1

Дата выпуска: 16 ноября 2021 г.

Проблемы, устраненные в выпуске 17.0.1

  • Исправлена проблема, приводящая к аварийному завершению при использовании пакетных сборок.
  • Исправлена проблема, приводящая к аварийному завершению при запуске проектов Xamarin.Forms с включенной Горячей перезагрузкой XAML.

От сообщества разработчиков

В Сообществе разработчиков приводится полный список исправлений, доступных в версии 17.0.

17.0.0 Visual Studio 2022 версии 17.0.0

Дата выпуска: 8 ноября 2021 г.

Сводка новых возможностей этого выпуска Visual Studio 2022 версии 17.0.0

64-разрядная версия

  • Файл devenv.exe теперь доступен только в 64-разрядной версии

Oблачныe службы Azure2

  • Новые проекты классической облачной службы Azure не поддерживаются, так как больше не рекомендуются в Azure новым клиентам. Рекомендуется заменить их проектами облачной службы Azure с расширенной поддержкой.
  • Существующие проекты классической облачной службы Azure полностью поддерживаются и доступны для работы.

C++

  • Средства сборки версии 143 теперь доступны через установщик Visual Studio, а также в автономных средствах сборки.
  • Новая возможность Горячей перезагрузки теперь доступна для собственных приложений C++ при работе в отладчике. Она поддерживает проекты MSBuild и CMake. Дополнительные сведения см. в разделе Горячая перезагрузка.
  • Теперь вы можете выполнять сборку и отладку в WSL2 без установления SSH-подключения. Поддерживаются кросс-платформенные проекты CMake и проекты Linux на основе MSBuild.
  • Visual Studio теперь поддерживает параметр buildPresets.targets в CMakePresets.json. Это позволяет создавать группу целевых объектов в проекте CMake.
  • Меню "Проект" в проектах CMake упрощено и предоставляет варианты "Удалить кэш и изменить конфигурацию" и "Просмотреть кэш".
  • Обзорные страницы CMake обновлены для поддержки CMakePresets.json.
  • Реализован флаг /scanDependencies для вывода зависимостей модуля C++20 для проектов CMake, как описано в P1689r4. Это шаг к поддержке создания проектов на основе модулей с помощью CMake, и мы работаем над реализацией этой поддержки в последующих выпусках.
  • Теперь вы можете выполнять из Visual Studio отладку процессов, работающих на удаленных системах, с помощью LLDB.
  • Мы обновили версию CMake, поставляемую с Visual Studio, до версии 3.21. Дополнительные сведения о новых возможностях см. в заметках о выпуске для CMake 3.21.
  • Средства LLVM, поставляемые с Visual Studio, были обновлены до LLVM 12. Подробные сведения см. в заметках о выпуске LLVM.
  • Набор инструментов MSVC теперь по умолчанию используется для хэширования источника SHA-256 в отладочных записях. Ранее набор инструментов использовал MD5 для хэширования источника по умолчанию.
  • Рабочая нагрузка "Разработка игр на C++" теперь устанавливает последний Unreal Engine с поддержкой для Visual Studio 2022.
  • Внесены улучшения в IntelliSense для C++, касающиеся навигации и подсветки синтаксиса типов из импортированных модулей и блоков заголовков.
  • Улучшена производительность IntelliSense для C++ за счет оптимизации использования кэшированных заголовков и доступа к базе данных символов, что позволило уменьшить время загрузки для перехода к коду.
  • Анализатор кода IntelliSense для C++ теперь включен по умолчанию. Он выдает мгновенные предложения во время ввода, а также предложения по исправлению для распространенных ошибок в коде.
  • Поддержка libfuzzer с параметром -fsanitize=fuzzer. Дополнительные сведения см. в документации.
  • Мы улучшили обнаружение разыменования пустого указателя в средствах анализа кода.
  • Анализ кода теперь обеспечивает принудительную проверку возвращаемых значений функций с аннотациями _Check_return_ или _Must_inspect_result_.
  • Добавлена поддержка gsl::not_null для анализа кода.
  • Обновление до версии NDK r21 LTS для рабочей нагрузки "Разработка мобильных приложений на языке C++".
  • Заголовки C++ AMP теперь являются нерекомендуемыми. Включение <amp.h> в проекте C++ приводит к возникновению ошибок сборки. Чтобы заглушить эти ошибки, определите _SILENCE_AMP_DEPRECATION_WARNINGS. Дополнительные сведения см. по ссылкам на статьи о прекращении использования AMP.

Отладка и диагностика

  • Усовершенствования диалогового окна "Присоединение к процессу"
  • Улучшения вспомогательного метода исключения
  • Принудительное выполнение до щелчка
  • Анализ диагностики дампа памяти
  • Мы выпустили новый тип точки останова, называемый зависимой точкой останова, который позволяет настроить срабатывание точки останова только после достижения другой точки останова.
  • Мы добавили дополнительные обновления в узел "Внешние источники". Теперь вы можете увидеть модуль во вложенном узле "Модули без источников" и загрузить символы из самого обозревателя решений.
  • Улучшения во внутренней области точки останова
  • Временная точка останова
  • Перетаскивание точки останова
  • Узел "Внешние источники" в Обозревателе решений
  • Усовершенствования диалогового окна "Присоединение к процессу"

Персонализация

  • Добавлены цветные вкладки для вертикальных и горизонтальных вкладок
  • Добавлен пакет тем и в сотрудничестве с авторами тем VS Code запущена коллекция пользовательских тем
  • Создан преобразователь тем, позволяющий преобразовывать темы VS Code для использования в Visual Studio 2022
  • Добавлена возможность синхронизации темы Visual Studio с темой Windows
  • Добавлены новые возможности управления документами, включая настройку ширины вкладок, выделение активного документа полужирным шрифтом и дополнительную кнопку "Закрыть" в разделе документов.

Редактор

  • Добавлена навигация по подсловам.
  • Автосохранение теперь доступно в качестве предварительной версии функции.
  • Возможности копирования и вставки с несколькими курсорами.

Расширение среды

  • Из сборок Microsoft.VisualStudio.Language.Client удалены API
  • Пакет SDK для VS содержит несколько критических изменений, а расширения Visual Studio 2019 не будут работать в Visual Studio 2022. Дополнительные сведения см. в документации по пакету SDK для VS.
  • Ссылочные сборки пакета SDK для VS больше не устанавливаются в папку VSSDK\VisualStudioIntegration\Common\Assemblies. Если ваша сборка использует эти ссылочные сборки, выполните миграцию проекта, чтобы использовать пакеты NuGet вместо ссылочных сборок. Для автономных сценариев:
    1. Сохраните веб-канал NuGet в организации, из которого восстанавливаются пакеты NuGet.
    2. Проверьте двоичные файлы.
  • Добавлены исправления для критических изменений ILanguageClient.

Облачные службы

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

Инструменты Git

Меню справки

  • В версии 17.0 мы перестроили меню "Справка" с материалами по началу работы и полезными советами.
  • Оно обеспечивает более тесное сотрудничество с нашей командой разработки, предоставляя доступ к Сообществу разработчиков, заметкам о выпуске, стратегии развития Visual Studio и нашим страницам в социальных сетях.

Возможность Горячей перезагрузки

  • Горячая перезагрузка теперь доступна разработчикам .NET через отладчик Visual Studio, а также без отладчика для многих типов приложений .NET 6.
  • Горячая перезагрузка теперь доступна разработчикам на C++ при использовании отладчика Visual Studio.

Дополнительные сведения см. по ссылке выше.

IntelliCode

JavaScript/TypeScript

  • Мы выпустили новый тип проекта JavaScript или TypeScript, который создает отдельные проекты JavaScript или TypeScript с дополнительными инструментами. Вы сможете создавать проекты Angular и React в Visual Studio с помощью версии платформы, установленной на компьютере.
  • Тестирование JavaScript и TypeScript теперь доступно в обозревателе тестов Visual Studio.
  • Доступен графический пользовательский интерфейс NPM, поэтому теперь вы можете скачивать модули NPM так же, как вы скачиваете пакеты NuGet.

Пакет SDK для .NET 6

  • Пакет SDK для .NET 6 включен в Visual Studio 2022

Производительность .NET

  • В результате рефакторинга параметров теперь можно переместить новый параметр из реализации метода в его вызывающие объекты.
  • Отслеживание источника значения для анализа потока данных
  • Параметр для подчеркивания переменных, которые были переназначены
  • Добавлен параметр поиска в диалоговом окне создания переопределений
  • Краткие сведения для тегов XML <code> теперь сохраняют пробелы и блоки CDATA
  • Окно "Найти все ссылки" теперь будет группировать проекты с несколькими целевыми объектами
  • Рефакторинг для удаления повторяющихся типов в Visual Basic
  • Переход к реализации больше не будет затрагивать элементы с абстрактными объявлениями, которые также переопределены.
  • Пространства имен синхронизированы, чтобы соответствовать структуре папок в Обозревателе решений
  • Настройка фонового анализа кода в Обозревателе решений
  • Ссылочные типы, допускающие значения NULL, теперь включены по умолчанию для новых проектов .NET.
  • Рефакторинг пространства имен с областью файла для C# 10.0.
  • Переход к декомпилированным исходным файлам теперь включен по умолчанию.
  • Рефакторинг с приоритетом проверки на NULL вместо проверки типа.
  • Комментарии XML теперь автоматически создают тег <exception>, когда метод явно выдает исключения.
  • Поле наследования теперь включено по умолчанию.

Языки программирования

  • C# 10

Редактор Razor (ASP.NET Core)

  • Уменьшено число зависаний пользовательского интерфейса, и улучшена производительность при запуске решения.
  • Ускорено семантическое раскрашивание, в некоторых решениях — в 2 раза.
  • Поддержка клавиши просмотра кода по клавише F7 в файлах Razor.
  • Поддержка фрагментов кода в файлах Razor. Сеанс работы с фрагментом будет завершаться после однократного нажатия клавиши TAB вместо двухкратного.
  • Улучшено форматирование в блоках @code при наличии вложенных компонентов Razor и HTML.
  • Поддержка Горячей перезагрузки в файлах Razor
  • Повышение производительности
  • Улучшения форматирования и отступов
  • Новые цвета в редакторе Razor
  • TagHelpers теперь имеют разные цвета и поддерживают классификацию в кратких сведениях и подсказках по завершению
  • Выделение угловыми скобками и навигация для конструкций Razor
  • Комментарии теперь поддерживают автозавершение, автоматический отступ, автоматическое включение продолжений комментариев и навигацию по блокам комментариев

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

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

Поддержка инструментов тестирования

  • Показать в Обозревателе тестов
  • На новых версиях платформы тестирования начиная с 17.0 будет невозможно запускать обычные тесты и упорядоченные тесты. Эти конкретные функции поставляются только в составе ранней версии MSTestv1 и не включены в MSTestv2. Мы видим, что эти функции используются очень мало, а упорядоченные тесты сейчас считаются не соответствующими лучшим методикам тестирования.
  • В версии 17.0 не будут доступны некоторые возможности тестирования, в том числе создание файлов TestSettings и редактор TestSettings. Файлы TestSettings можно будет по-прежнему использовать в тестовых запусках, однако на смену им приходят файлы RunSettings, и мы рекомендуем пользователям перейти на них для улучшения производительности и расширения функциональности. Дополнительные сведения.
  • Обновления поддержки нагрузочных веб-тестов и закодированных тестов пользовательского интерфейса. Закодированные тесты пользовательского интерфейса и [нагрузочные веб-тесты](Прекращение использования службы облачного нагрузочного тестирования | Блог Azure DevOps (microsoft.com) официально объявлены нерекомендуемыми в 2019 г. Чтобы снизить влияние на пользователей, эти функции поддерживаются в Visual Studio 2022 в минимальном объеме. Мы настоятельно рекомендуем пользователям перенести закодированные тесты пользовательского интерфейса и нагрузочные веб-тесты.

Заполнение панели элементов для пакетов SDK расширения UWP

  • Пакеты SDK расширения UWP теперь необходимы для явного объявления типов, которые должны отображаться на панели элементов. Их нужно указать в файле SdkManifest.xml. Поведение старых версий Visual Studio не изменяется. Они будут игнорировать список элементов управления в манифесте и вместо этого динамически перечислять типы элементов управления в сборках SDK.

Надежные расположения

  • Мы изменили параметры доверия, и теперь эта функция выдает предупреждение, когда вы собираетесь открыть ненадежный код (например, файлы, проекты или папки) в интегрированной среде разработки.
  • Проверки доверия теперь выполняются на уровне папки решения.
  • Созданные пользователем проекты автоматически добавляются в список доверенных.
  • Пользователи могут пропускать проверки доверия во временных расположениях, создаваемых Visual Studio.

Обновления, LTSC и развертывание

  • В Visual Studio 2022 будет одновременно поддерживаться несколько базовых планов обслуживания, которые будут выпускаться осенью и весной. Дополнительные сведения см. в документации по графику выпуска Visual Studio и в описании жизненного цикла продукта Visual Studio 2022.
  • Новый установщик, поставляемый с Visual Studio 2022, теперь имеет возможность настройки расположения, из которого должны получаться обновления для Visual Studio. Это позволяет выбрать обновления из другого выпуска LTSC, а если вы работаете в управляемой корпоративной среде, то можете настроить получение обновлений клиентом из макета. Возможность настройки источника обновлений — это новая функция, которая входят в состав Visual Studio Installer, поэтому она применима к предыдущим версиям Visual Studio, например Visual Studio 2019. Дополнительные сведения о настройке канала обновления см. в документации по обновлению Visual Studio. Дополнительные сведения о настройке этой функции для сетевых макетов см. в руководстве администратора Visual Studio.
  • ИТ-администраторы теперь могут сообщать о проблемах без установки Visual Studio.

Пользовательский интерфейс

  • Обновлены значки по умолчанию.

Веб-инструменты

  • На странице "Сводка публикации" теперь есть действия для запуска и остановки удаленной отладки и профилирования в меню "…" в правом верхнем углу раздела "Размещение"
  • На странице "Подключенные службы" теперь есть действие для запуска Обозревателя службы хранилища
  • Шаблон "Пустой ASP.NET Core", входящий в состав .NET 6, использует новую парадигму "минимального числа API", для которой мы начали добавлять поддержку.
  • Azurite будет использоваться для локальной эмуляции службы хранилища Azure вместо более старого эмулятора службы хранилища Azure, активная работа над которым завершена.
  • Вы можете добавить проверку подлинности в приложение ASP.NET Core с помощью платформы удостоверений Майкрософт, используя интерфейс "Подключенные службы" в Visual Studio.

Конструктор XAML WPF для .NET Framework

  • Текущий Конструктор XAML WPF для .NET Framework заменен новым Конструктором XAML WPF для .NET Framework, в основе которого лежит та же архитектура, которая использовалась для Конструктора XAML WPF для .NET (.NET Core). Интерфейс Visual Studio изменен не будет, однако сторонним поставщикам элементов управления будет необходимо обеспечить поддержку новой модели расширяемости, так как предыдущая модель на основе .design.dll и Microsoft.Windows.Design.Extensibility является устаревшей. Если вы уже создали расширение .designtools.dll для .NET (.NET Core), это расширение будет работать для нового Конструктора XAML WPF для .NET Framework. Дополнительные сведения о переходе на новую модель расширяемости см. в документации по миграции ниже.

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

  • Изменения Горячей перезагрузки XAML — незначительные изменения на панели инструментов и в параметрах приложения.

Динамический просмотр XAML

  • XAML Live Preview теперь доступен для разработчиков WPF, UWP, WinUI и Xamarin.Forms, запускающих приложения в Android Emulator или как классические приложения UWP. Live Preview захватывает пользовательский интерфейс работающего приложения и переносит его в закрепленное окно в Visual Studio. Это упрощает использование Горячей перезагрузки XAML для изменения приложения, так как изменения отображаются непосредственно в Visual Studio без необходимости перехода между запущенным приложением и Visual Studio при динамическом изменении кода XAML.

Для получения дополнительных сведений щелкните ссылку выше.

Пример данных XAML

  • Теперь при создании элементов управления DataGrid, ListBox и ListView из панели элементов в приложениях WPF будут по умолчанию добавляться примеры данных во время разработки. Чтобы отключить это действие, в разделе "Сервис" > "Параметры" > "Конструктор XAML" снимите флажок "Автоматически добавлять примеры данных при создании элемента".
  • Дополнительные сведения о примерах данных см. в соответствующей документации.

Улучшенный интерфейс привязки XAML

  • Мы внесли ряд усовершенствований для быстрой и простой привязки данных, таких как быстрый доступ к диалоговому окну "Привязка данных" из инспектора свойств, возможность настройки привязки посредством быстрых действий и возможность выбора свойства для привязки в диалоговом окне "Привязка данных".

Для получения дополнительных сведений щелкните ссылку выше.

Известные проблемы

Разработка мобильных приложений на .NET

Инструментарий Python

C++ IntelliSense

Подробное описание новых возможностей этого выпуска Visual Studio 2022 версии 17.0.0

Отладка и диагностика

  • Усовершенствования диалогового окна "Присоединение к процессу"
  • Представление списка родительских и дочерних процессов с помощью переключателя в нижней части окна
    • Необходимо сохранить выбор представления.
    • При нажатии левой клавиши на клавиатуре выполняется переход к родительскому процессу в представлении родительских и дочерних процессов.
    • Все столбцы должны быть отсортированы как исходное представление.
  • Новый столбец командной строки доступен в обоих представлениях.
  • Отображение имени пула приложений в столбце заголовка для процессов w3wp

![Присоединение к процессу ](media/17.0/17.0_P2_attach_to _process_3.png)

  • В блок catch добавлен вспомогательный метод исключения. Это приведет к отображению вспомогательного метода исключения с соответствующими сведениями об исключении, когда управляемый шаг вызывает исключение и завершается в блоке catch.
  • Новая кнопка "Продолжить": отображение вспомогательного метода исключения для перехваченных исключений.

Обновления обработчика исключений

  • Добавлен вариант принудительного выполнения до щелчка, который будет выполнять отладчик до курсора, игнорируя все точки останова.
  • Для этого можно выбрать в пункт "Принудительное выполнение до щелчка" в контекстном меню на нужной строке кода.

Принудительное выполнение до курсора

  • Если приложение находится в режиме отладки, можно также выполнить команду "Принудительное выполнение до щелчка", щелкнув зеленый глиф рядом со строкой кода при наведении указателя мыши с нажатой клавишей SHIFT.

Глиф "Принудительное выполнение до курсора"

  • Анализ диагностики дампа памяти
    • Мы улучшили подсистему анализатора, чтобы находить проблемы с методом sync over async в дампах памяти ASP.NET Core.
    • Узнайте, какие части кода потребляют больше всего ресурсов ЦП, просмотрев пять основных потоков по времени ЦП.
    • Изучите всю управляемую кучу на предмет признаков нехватки памяти в поколениях 0, 1, 2 и куче больших объектов.
    • При наличии аварийного дампа можно быстро найти исключение второго шанса и поток, вызвавшие сбой приложения.
    • Не можете сформулировать гипотезу для диагностики? Если точная причина сбоя или зависания неизвестна, можно использовать анализатор исключений для быстрого поиска и просмотра всех исключений в куче.
    • В то же время, если важен анализ памяти, мы улучшили эвристику анализатора очереди методов завершения. Теперь мы сосредотачиваемся на коде и исключаем объекты, управляемые платформой .NET Framework.

Зависимая точка останова

Это новая точка останова, с помощью которой пользователь может настроить активацию точки останова только в том случае, если сначала сработает другая точка останова. При отладке отладчик Visual Studio приостанавливает приложение в зависимой точке останова, только если достигнута обязательная точка останова. Любую точку останова можно преобразовать в зависимую, поставив флажок "Включить только при достижении следующей точки останова" в окне "Параметры" и выбрав в раскрывающемся списке необходимую точку останова, от которой будет зависеть эта точка останова.

Зависимая точка останова

Улучшения во внутренней области точки останова

Мы добавили новый глиф точки останова, который указывает расположение, где пользователь может задать точку.

Глиф точки останова

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

Контекстное меню точки останова

Временная точка останова

Это новая точка останова, которая позволяет пользователю прервать код только один раз. Отладчик Visual Studio приостанавливает среду выполнения приложения только один раз для этой точки и удаляет точку сразу же после ее срабатывания. Любую точку останова можно преобразовать во временную, установив флажок "Удалить точку останова после срабатывания" в окне параметров. Такую точку также можно установить из нового контекстного меню во внутренней области точки останова.

Временная точка останова

Перетаскивание точки останова

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

Перетаскивание точки останова

Узел "Внешние источники" в Обозревателе решений

Мы добавили новый узел "Внешние источники" в Обозреватель решений. Сейчас он отображается только при отладке и показывает источники для управляемых модулей с загруженными файлами символов, которые содержат данные исходных серверов или ссылок на источники. Во время отладки в этом узле будут отображаться все загруженные управляемые файлы символов (.pdb), содержащие сведения об исходном сервере. Вы можете переходить к файлам так же, как к любой другой папке в Обозревателе решений, или дважды щелкнуть элемент, чтобы скачать файл с исходного сервера и открыть его в редакторе Visual Studio. Узел "Внешние источники" в Обозревателе решений

Усовершенствования диалогового окна "Присоединение к процессу"

В диалоговом окне "Присоединение к процессу" добавлен новый флажок автоматического обновления, при установке которого список процессов пополняется новыми доступными процессами автоматически. Новая функция "Выбор любого окна с рабочего стола" в диалоговом окне "Присоединение к процессу" позволяет пользователю выбрать любое работающее окно на рабочем столе и присоединить его к связанному процессу для отладки.

Усовершенствования диалогового окна "Присоединение к процессу"

Диагностический анализ дампа памяти

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

Персонализация

Преобразование тем VS Code в темы Visual Studio

Мы создали преобразователь тем, позволяющий преобразовывать темы VS Code для использования в Visual Studio. Попробуйте его здесь.

Новый пакет тем Visual Studio

Темы VS Code по умолчанию теперь доступны в виде пакета тем Visual Studio. Ознакомиться с пакетом тем можно здесь.

Синхронизация темы с ОС Windows

Мы добавили возможность синхронизации темы Visual Studio с темой Windows, чтобы тема настраивалась в зависимости от интенсивности внешнего освещения. Чтобы включить эту функцию, выберите "Сервис > Тема > Использовать системные настройки".

Цветные вкладки

Чтобы включить цветные вкладки, выберите "Сервис > Параметры > Вкладки и окна" и включите параметр "Цветные вкладки".

Цветные вкладки

Редактор

Навигация по подсловам

Теперь при помощи клавиш CTRL + ALT + СТРЕЛКА ВЛЕВО и CTRL + ALT + СТРЕЛКА ВПРАВО возможна навигация по подсловам. Например, в строке "HelloWorld" будут определены как подслова "Hello" и "World". Если включить навигацию по подсловам в разделе Сервис > Параметры > Текстовый редактор > Общие, то связанные со словами команды, например TransposeWord, будут взаимодействовать с подсловами.

Автоматическое сохранение

Теперь доступно автоматическое сохранение, которое можно включить в разделе Сервис > Параметры > Среда > Предварительные версии функций. Если оно включено, то при переключении фокуса с приложения Visual Studio на что-то другое (например, на другое окно) все измененные документы будут по возможности сохранены на диск. Если сохранить какой-то файл не удается, он будет оставаться измененным, пока пользователь явно не сохранит его самостоятельно (командой "Сохранить" или "Сохранить как…").

Возможности копирования и вставки с несколькими курсорами

Мы улучшили возможности копирования и вставки с использованием нескольких курсоров. В прошлом при установке нескольких курсоров и копировании в них нескольких строк у каждого курсора происходила вставка всего содержимого буфера обмена. Теперь же, если скопировать и вставить определенное число строк ровно для такого же числа курсоров, каждая строка будет копироваться под соответствующий ей курсор отдельно. Для установки курсоров используйте ALT + SHIFT + щелчок мышью или ALT + SHIFT + . (клавиша точки). Нажимайте CTRL + SHIFT + клавиши стрелок, чтобы расширить выделенный фрагмент. После этого нажмите клавиши CTRL + C, чтобы скопировать текст из нескольких фрагментов. Используйте ALT + SHIFT + щелчок мышью, чтобы установить несколько курсоров для каждой строки, куда нужно выполнить вставку. Наконец, нажмите CTRL + V, чтобы вставить каждую из строк под собственный курсор.

Копирование и вставка с несколькими курсорами

Кроме того, теперь вы можете использовать клавиши ALT + SHIFT + СТРЕЛКА ВВЕРХ или СТРЕЛКА ВНИЗ либо ALT + SHIFT + перетаскивание курсора мыши для выделения строк с применением множества курсоров. В прошлом эти сочетания выделяли блок текста. Теперь выделенный блок преобразуется в строки с несколькими курсорами. Этот метод проще и быстрее, чем вставлять отдельные курсоры, точно щелкая мышью в разных местах. Если же вам удобнее использовать клавиши ALT + SHIFT + СТРЕЛКА ВВЕРХ или СТРЕЛКА ВНИЗ и ALT + SHIFT + перетаскивание курсора мыши, чтобы расширять выделенный блок текста при работе с множеством курсоров, перейдите в раздел Сервис > Параметры > Текстовый редактор > Дополнительно и выберите Использовать выделение блоками.

Параметр выделения блоками для множества курсоров

Расширяемость

Microsoft.VisualStudio.LanguageServer.Client представляет новый способ настройки уведомлений при сбое инициализации языкового клиента.

Задача инициализации теперь будет отслеживаться Центром состояния задач. Если задача инициализации завершается сбоем, пользователи могут перейти в этот центр и получить дополнительные сведения о том, что пошло не так. Языковые клиенты теперь позволяют настраивать отображаемое пользователю сообщение с описанием сбоя и возможными действиями по его устранению. Для этого мы добавляем новый набор API в интерфейс ILanguageClient. Эти новые API приведут к критическому изменению в интерфейсе ILanguageClient, поэтому для работы в Visual Studio 2022 языковым расширениям потребуется указать ссылку на новый пакет.

Новые API перечислены ниже:

  1. Свойство ShowNotificationOnInitializeFailed — логическое свойство, которое определяет, должен ли языковой сервер отобразить всплывающее сообщение, уведомляющее пользователя об ошибке, например:

ShowNotificationOnInitializeFailed в Центре состояния задач

Рекомендуется устанавливать для этого свойства значение true только в том случае, если сбой кардинально нарушает работу пользователя с текущим проектом.

  1. Метод OnServerInitializedFailedAsync — этот метод будет вызываться при сбое инициализации языкового клиента. Мы предоставляем объект LanguageClientInitializationInfoBase со сведениями о том, как возник сбой, чтобы языковой клиент мог уведомить о нем пользователя своими средствами или выдать настраиваемое сообщение с контекстом сбоя. При выдаче сообщения оно будет отображаться в окне вывода Visual Studio.

Ошибка инициализации языкового клиента в окне вывода

JavaScript/TypeScript

Теперь поддерживается новый тип проекта JavaScript/TypeScript, который позволяет создавать автономные проекты Angular, React и Vue в Visual Studio. Проекты будут создаваться с помощью платформенных средств интерфейса командной строки (CLI), установленных на локальном компьютере. Это также означает, что версия шаблона будет основана на версиях CLI, имеющихся на локальном компьютере.

В этих новых проектах вы сможете выполнять модульные тесты и интегрировать их с проектами API ASP.NET Core. Документацию можно найти здесь.

  • Мы выпустили новый тип проекта JavaScript или TypeScript, который создает отдельные проекты JavaScript или TypeScript с дополнительными инструментами. Дополнительные сведения см. здесь.
  • Доступен графический пользовательский интерфейс NPM, позволяющий загружать модули NPM так же, как вы загружаете пакеты Nuget, в новых проектах JavaScript/TypeScript.

NPM GUI NPM GUI2

Горячая перезагрузка для разработчиков .NET и C++

Ранее в этом году мы анонсировали Горячую перезагрузку .NET, амбициозный проект, цель которого — сделать Горячую перезагрузку доступной максимально возможному числу разработчиков .NET. Мы начали эту инициативу с первой предварительной версии в Visual Studio 2019 и пообещали гораздо больше возможностей в Visual Studio 2022, где будет доступно полнофункциональное средство. Сегодня мы рады поделиться с вами своими достижениями в общедоступном выпуске Visual Studio 2022.

Для тех, кто еще не знает, что такое Горячая перезагрузка, ниже приведена краткая информация. Горячая перезагрузки в Visual Studio работает как для управляемых приложений .NET, так и для собственных приложений C++. Вне зависимости от типа приложения, над которым вы работаете, цель Горячей перезагрузки заключается в том, чтобы максимально уменьшить количество перезапусков приложения после изменений. Это позволяет повысить продуктивность, уменьшить время, затрачиваемое на ожидание перестроения и перезапуска приложений, а также на возврат к точке в приложении, на которой вы ранее остановились, и т. д.

Это достигается за счет того, что вы можете изменить файлы кода приложения и немедленно применить изменения к выполняющемуся приложению, что также известно как "Горячая перезагрузка". После применения изменений вы повторно исполняете код, выполнив действие в самом приложении (или с помощью определенного таймера и т. п.), а затем немедленно просматриваете изменения. При этом не нужно приостанавливать приложение с помощью точек останова.

Если вы хотите увидеть интерактивные демонстрации этой функции, то можете просмотреть один из следующих видеороликов:

Пользовательский интерфейс Горячей перезагрузки в Visual Studio

Интерфейс Горячей перезагрузки для разработчиков .NET и C++ в Visual Studio 2022 также подвергся значительным улучшениям. Теперь на панели инструментов есть специальная реализация кнопки "Горячая перезагрузка" с улучшенным внешним видом и функциональностью.

Первое, что вы заметите, — это новая кнопка с раскрывающимся меню и новым значком. Команда "Применить изменения кода" (в ранних предварительных версиях) переименована в "Горячая перезагрузка".

Пользовательский интерфейс Горячей перезагрузки в Visual Studio 2022

Развернув кнопки, вы получите быстрый доступ к таким функциям, как перезапуск запущенных приложений, включение или отключение Горячей перезагрузки при сохранении и быстрый доступ к новой панели параметров.

Ниже приведены дополнительные сведения о каждой из новых функций.

  • Простой перезапуск приложений. Теперь можно легко перезапустить работающее приложение, если необходимо применить грубое изменение через перестроение независимо от того, запущено приложение с помощью отладчика или без него (новая возможность для приложений .NET 6).
  • Горячая перезагрузка при сохранении. В более ранних предварительных выпусках изменения Горячей перезагрузки можно было применять при сохранении только в проектах ASP.NET. Для других проектов необходимо было явно нажимать кнопку "Горячая перезагрузка". В окончательном выпуске теперь можно применять Горячую перезагрузку с помощью переключателя "Сохранить" для любого типа проекта. Этот параметр не обязателен, но после включения он будет применяться ко всем будущим сеансам Visual Studio, пока вы не отключите его.
  • Простой доступ к параметрам. Мы добавили панель параметров Горячей перезагрузки, чтобы обеспечить больше контроля над включением и отключением Горячей перезагрузки. Эти параметры находятся в разделе Visual Studio "Параметры > Горячая перезагрузка .NET/C++". Также их можно открыть в раскрывающемся меню Горячей перезагрузки, щелкнув "Параметры".

Мы также добавили усовершенствованное диалоговое окно "Грубая редакция", которое доступно при запуске приложения .NET без отладчика.

Новое диалоговое окно "Грубая редакция" для Горячей перезагрузки в Visual Studio 2022

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

  • Действующий в рамках сеанса Visual Studio параметр для перестроения и применения изменений при каждой грубой редакции Горячей перезагрузки. После его включения он применяется ко всем будущим грубым редакциям до перезапуска Visual Studio.
  • Команда перестроения и применения изменений кода, которую можно вызвать одним щелчком, а не несколькими ручными действиями.
  • Простой доступ к параметрам.

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

Существует одно известное ограничение: новое диалоговое окно будет недоступно в общедоступном выпуске при использовании отладчика, однако это будет исправлено в будущем обновлении.

Поддержка приложений С++

При использовании Visual Studio 2022 и запуске приложения с помощью отладчика теперь можно выполнить горячую перезагрузку собственного приложения C++ при запуске в отладчике (F5) с помощью кнопки "Горячая перезагрузка". Горячая перезагрузка также поддерживается для приложений, созданных с помощью проектов CMake и OpenFolder.

Этот механизм реализован с помощью собственной функции "Изменить и продолжить". Поддерживаемые изменения см. в нашей документации.

Поддерживаемые платформы приложений .NET и сценарии

С анонса Горячей перезагрузки в мае 2021 года разработчики .NET часто задавали вопрос: "Будет ли Горячая перезагрузка работать с моим сочетанием платформы и версии приложений .NET?" Мы провели большую работу над тем, чтобы в большинстве случаев на этот вопрос можно было ответить утвердительно. Вот лишь некоторые результаты.

  • При использовании Visual Studio 2022 и запуске приложения с помощью отладчика базовый интерфейс Горячей перезагрузки работает с большинством типов приложений .NET и версий платформы, включая .NET Framework, .NET Core и .NET 5 и более поздних версий (как для C#, так и для VB.NET). Среди поддерживаемых типов приложений: веб-приложения (изменения кода программной части), классические, мобильные, облачные и другие типы проектов. Главное правило в том, что если вы используете отладчик, то можете допустить, что Горячая перезагрузка доступна вам, и можете ее попробовать!
  • Если вы используете Visual Studio 2022, но не используете отладчик, например нажимаете клавиши CTRL+F5 для запуска приложения, Горячая перезагрузка теперь доступна для большинства типов приложений .NET  6 даже без отладчика. Это означает, что приложения, не предназначенные для .NET 6 (.NET 5 или более ранних версий), не поддерживают сценарий "без отладчика" и должны использовать отладчик для получения поддержки Горячей перезагрузки.
  • При использовании Visual Studio 2022 с приложением .NET 6 большинство сценариев поддерживаются. Это не ограничивается новой функцией "без отладчика", упомянутой выше. Также поддерживаются другие новые возможности, такие как Горячая перезагрузка проектов Blazor и, в более общем плане, изменение файлов Razor в любых приложениях ASP.NET Core и Горячая перезагрузка CSS. Использование Visual Studio 2022 вместе с приложениями, предназначенными для .NET 6, обеспечивает наиболее эффективное использование Горячей перезагрузки. Надеемся, вы попробуете такое сочетание.

Ниже будет более подробно описана приведенная выше сводка.

Visual Studio 2022 с приложением .NET при использовании отладчика

При использовании Visual Studio 2022 и запуске приложения с помощью отладчика Горячая перезагрузка работает с большинством платформ приложений, включая распространенные типы приложений, например консольные, Windows Forms (WinForms), WPF, UWP, WinUI 3 *, а также большинством типов веб-проектов ASP.NET (для изменений кода программной части), включая ASP.NET MVC, веб-API и даже старые проекты Web Forms. Этот список также не исчерпывающий. В действительности, если вы используете .NET и управляемый отладчик Visual Studio, то должны получить базовую поддержку Горячей перезагрузки.

Это означает, что в таком сценарии отлично работают даже такие проекты, как Функции Azure. Мы рекомендуем вам попробовать свое сочетание и сообщить нам о проблемах, если они возникнут.

* WinUI 3 по умолчанию использует отладку в смешанном режиме, которая не поддерживает Горячую перезагрузку. Это можно изменить в параметрах проекта, включив управляемый отладчик, который обеспечивает правильную работу Горячей перезагрузки.

Использование Visual Studio 2022 с приложением .NET без отладчика

Горячая перезагрузка теперь доступна без отладчика при нацеливании на большинство типов приложений .NET 6, включая такие типы проектов, как консольные, WPF, Windows Forms (WinForms), ASP.NET Core MVC, веб-API и Blazor. Мы понимаем, что у некоторых разработчиков есть веские причины для запуска приложений без отладчика, и надеемся, что эта дополнительная функция окажется для них полезной и практически не повлияет на время запуска.

Эта функция предоставляется исключительно для .NET 6+. Приложения, не предназначенные для .NET 6 (.NET 5 или более ранних версий), не поддерживают сценарий "без отладчика" и должны использовать отладчик для получения доступа к Горячей перезагрузке.

Кроме того, имейте в виду, что в первом выпуске не все типы проектов поддерживают сценарий "без отладчика". В частности:

  • Приложения UWP не поддерживают Горячую перезагрузку без отладчика. Это предусмотрено специально, и добавление поддержки не планируется.
  • Приложения Xamarin.Forms, предназначенные для iOS и Android, не поддерживают Горячую перезагрузку .NET (независимо от того, запускается ли приложение с отладчиком или без него), но будут продолжать поддерживать Горячую перезагрузку XAML.
  • Приложения .NET MAUI в ближайшем будущем не будут поддерживать сценарий "без отладчика", но будут поддерживать Горячую перезагрузку .NET через отладчик.

При использовании Visual Studio 2022 с приложением .NET 6 большинство сценариев поддерживаются.

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

Основные поддерживаемые возможности:

  • Приложения Blazor (Server и WebAssembly *);
  • изменение файлов Razor в Blazor и на обычных веб-сайтах ASP.NET Core;
  • Горячая перезагрузка CSS;
  • поддержка Горячей перезагрузки при запуске приложений без отладчика (как описано выше).

Разработчики, нацеливающие приложения на .NET 6, продолжат получать улучшения в будущих обновлениях Visual Studio 2022, а также в основных выпусках .NET. Это лишь начало!

* В общедоступном выпуске Visual Studio 2022 пока не включена поддержка Горячей перезагрузки для Blazor WebAssembly, если используется отладчик Visual Studio. Если вы запускаете приложение с помощью Visual Studio без отладчика, то по-прежнему можете использовать Горячую перезагрузку. Эта проблема будет устранена в будущем обновлении Visual Studio.

Поддерживаемые сценарии ASP.NET Core

Базовые функции Горячей перезагрузки широко поддерживаются для многих сценариев ASP.NET. Самой распространенной функцией является возможность изменения кода программной части и других файлов классов .NET для большинства типов веб-приложений. Эта функция работает при использовании отладчика Visual Studio везде, где ранее был доступен режим "Изменить и продолжить".

Для разработчиков ASP.NET Core, которые нацеливают приложения на .NET 6, существуют дополнительные возможности, недоступные для более ранних версий .NET. Они включают в себя следующие улучшения:

  • CSHTML. При редактировании файла CSHTML Razor теперь поддерживается много типов изменений.
  • Обновление браузера. Редактирование файла Razor теперь будет автоматически обновлять изменения в веб-браузере при отладке. Ранее это было доступно только при запуске приложения без отладчика.
  • Горячая перезагрузка CSS. Теперь можно изменять CSS-файлы во время работы приложения, и изменения будут применяться к выполняющемуся приложению по мере ввода.
  • Без отладчика. Теперь вы получаете поддержку Горячей перезагрузки при использовании Visual Studio для запуска веб-приложения без отладчика (CTRL+F5).

Примечание. При работе с приложением Blazor Wasm и использовании Visual Studio 2022 (17.0) функция Горячей перезагрузки для Razor Pages сейчас действует только при запуске приложений без отладчика. В будущем обновлении будет добавлена поддержка отладчика.

Поддерживаемые изменения .NET

Функция Горячей перезагрузки .NET основана на механизме "Изменить и продолжить". Мы внесли улучшения для поддержки дополнительных типов изменений помимо тех, которые были возможны в предыдущих версиях. Добавлены некоторые улучшения, среди которых:

  • Добавление, обновление и удаление настраиваемых атрибутов
  • Добавление или обновление структур записей
  • добавление и обновление директив #line;
  • Изменение выражений переключателей
  • Изменение файлов с помощью директив #line, включая изменения самой директивы
  • изменение инструкций верхнего уровня;
  • редактирование кода, использующего какие-либо из новых возможностей C# 10, например глобальные директивы using, пространства имен в области файла, улучшенные лямбда-выражения и конструкторы структур без параметров;
  • переименование лямбда-параметров;
  • переименование параметров существующих методов.

Перечисленные выше улучшения доступны как для Горячей перезагрузки, так и для режима "Изменить и продолжить".

Дополнительные обновления

  • Горячая перезагрузка и функция "Изменить и продолжить" с несколькими процессами. Теперь можно надежно использовать Горячую перезагрузку и функцию "Изменить и продолжить" при присоединении к нескольким процессам. Ранее эта функция поддерживалась не полностью и не всегда работала правильно. Теперь все исправлено.
  • Обновленные предупреждения и сообщения об ошибках. Стали более понятными многие предупреждения и сообщения об ошибках, относящиеся к функции "Изменить и продолжить" и к Горячей перезагрузке. Эти сообщения сделаны более универсальными, чтобы терминология "Изменить и продолжить" не использовалась для операций Горячей перезагрузки.
  • Более быстрое модульное тестирование приложений .NET. Технологию Горячей перезагрузки теперь можно использовать в качестве экспериментальной функции для ускорения модульного тестирования при нацеливании на .NET 6. Дополнительные сведения см. в разделе "Тестирование" этих заметок о выпуске.

Неподдерживаемые сценарии .NET

Даже в окончательном выпуске останутся неподдерживаемые сценарии, о которых следует знать:

  • Приложения Xamarin. Forms не поддерживают Горячую перезагрузку .NET в сценариях iOS и Android. При нацеливании на приложение UWP будут доступны некоторые возможности Горячей перезагрузки. Это предусмотрено специально, и какие-либо улучшения в этом отношении не планируются. (Примечание. Горячая перезагрузка XAML будет по-прежнему доступна и поддерживаться для клиентов Xamarin.Forms с использованием последней версии пакета SDK.)
  • Приложения .NET MAUI не поддерживаются в этом выпуске. Сведения о работе с .NET MAUI и Горячей перезагрузкой см. в заметках о выпуске Visual Studio 2022 с обновлением 1, предварительная версия 1.
  • Приложения, созданные с помощью F# или нацеленные на .NET Native, не будут поддерживать Горячую перезагрузку.

Производительность .NET

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

Синхронизация пространств имен из Обозревателя решений

Конфигурация фонового анализа кода теперь доступна в контекстном меню Обозревателя решений. Щелкните правой кнопкой мыши узел решения в Обозревателе решений и выберите Анализ и очистка кода. Затем выберите Задать область анализа, чтобы настроить область для фонового анализа кода.

  • Теперь доступен рефакторинг, вводящий параметр, который перемещает выражение из реализации метода в вызывающие объекты путем добавления нового параметра. Поместите курсор в строку, содержащую выражение, или выделите выражение. Нажмите (CTRL + .), чтобы открыть меню Быстрые действия и рефакторинг. Выберите Ввод параметра для {0} или Ввод параметра для всех вхождений {0} . У обоих параметров есть три всплывающих варианта: (1) для вставки обновленного выражения во все места вызова; (2) извлечения и создания нового метода, возвращающего выражение, и добавления аргумента в места вызова; (3) создания перегрузки метода, который содержит выражение и вызовы для исходного метода.

Добавление параметра из меню "Быстрые действия"

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

Пункт "Отслеживать источник значения" в контекстном меню

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

Окно "Отслеживание источника значения"

  • Мы добавили параметр для подчеркивания переназначенных переменных. По умолчанию он отключен. Его можно включить в разделе "Сервис > Параметры > Текстовый редактор > C# или Basic > Расширенные", выбрав "Подчеркивать переназначенные переменные".

Подчеркивание переназначенных переменных в редакторе

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

Поиск в диалоговом окне создания переопределений

  • Краткие сведения для тегов XML <code> теперь сохраняют пробелы и блоки CDATA. Наведите указатель мыши на элемент. В поле кратких сведений будут показаны поддерживаемые стили из комментариев XML к коду.

Сохранение пробелов в кратких сведениях для XML

  • В окне "Найти все ссылки" проекты с несколькими целевыми объектами теперь будут сгруппированы, что позволит упорядочить представление.

Группирование проектов с несколькими назначениями в окне "Найти все ссылки"

  • Теперь рефакторинг удаляет повторяющиеся типы в Visual Basic.
  • Переход к реализации больше не будет затрагивать элементы с абстрактными объявлениями, которые также переопределены.

Средства языка C#

В C# 8.0 были представлены ссылочные типы, допускающие значение NULL, которые позволяют объявить, ожидается ли значение NULL. Чтобы использовать такие типы, необходимо добавить элемент <Nullable>enable</Nullable> в файл проекта или добавить прагму #nullable enable в каждый исходный файл проекта. Для упрощения этого процесса теперь мы автоматически включаем элемент <Nullable>enable</Nullable> в новые проекты .NET.

В C# 10.0 вводится пространство имен с областью файла, которое позволяет не создавать в пространстве имен вложенные определения классов. Теперь доступен рефакторинг для преобразования обычного пространства имен в пространство с областью файла. Чтобы использовать такое пространство, сначала необходимо добавить элемент <LangVersion>preview</LangVersion> в файл проекта. Затем поместите курсор на пространство имен. Нажмите CTRL+ . , чтобы открыть меню Быстрые действия и рефакторинг. Выберите Преобразовать в пространство имен с областью файла.

Рефакторинг пространства имен с областью файла

Теперь существует рефакторинг, позволяющий приоритетно использовать is not null вместо is object при применении к типам значений. Чтобы использовать этот новый рефакторинг, наведите курсор на проверку типа. Нажмите CTRL+ . , чтобы открыть меню Быстрые действия и рефакторинг. Выберите Приоритет проверки на NULL перед проверкой типа.

Переход к декомпилированным исходным файлам

Переход к декомпилированным исходным файлам теперь включен по умолчанию, что позволяет переходить к объявлениям типов библиотек. Такой переход доступен при вызове функции "Перейти к определению" для библиотечного файла символов в исходном коде и для декомпилированных исходных файлов.

Улучшения в редакторе

Комментарии XML теперь автоматически создают тег <exception> в теге <summary>, что позволяет добавлять описание, когда метод явно выдает исключения.

В Visual Studio 2019 было добавлено поле наследования, которое добавляет значки в поля, представляющие реализации и переопределения кода. Если щелкнуть значок поля наследования, появятся параметры наследования, к которым можно перейти. В этом выпуске поле наследования включено по умолчанию. Чтобы отключить поле наследования, перейдите в раздел Сервис > Параметры > Текстовый редактор > C# или Основные > Дополнительно и снимите флажок Включить поле наследования.

Поле наследования

Языки программирования

C# 10

Более подробные сведения см. в описании состояния функций языка C# и критических изменений.

Редактор Razor (ASP.NET Core)

  • Теперь в файлах Razor поддерживается Горячая перезагрузка.

Поддержка перезагрузки в файлах Razor

  • Мы значительно улучшили производительность редактора Razor.

  • Мы улучшили форматирование и отступы, сделав их надежнее и значительно быстрее.

  • Мы добавили новые цвета Razor! Цвета можно настроить в разделе "Сервис > Параметры > Среда > Шрифты и цвета".

  • TagHelpers теперь имеют разные цвета и поддерживают классификацию в кратких сведениях и подсказках по завершению IntelliSense.

Поддержка классификации TagHelpers

  • Мы улучшили выделение ветвей угловыми скобками и навигацию для конструкций Razor.

  • Комментарии теперь поддерживают автозавершение, автоматический отступ, автоматическое включение продолжений комментариев и навигацию по блокам комментариев.

Удаленное тестирование в ранней экспериментальной предварительной версии

Мы представляем экспериментальную предварительную версию на очень раннем этапе, которая позволяет выполнять тесты в удаленных средах, таких как контейнеры Linux, WSL и через SSH-подключения. Хотя это очень важная возможность, мы просим вас запастись терпением, так как эта функция по-прежнему находится в самом раннем экспериментальном состоянии, и собираем отзывы. Вы можете столкнуться с различными недочетами, поскольку существует множество сценариев взаимодействия с подключенной средой и управления ею из Visual Studio. Ниже приведены некоторые требования к использованию этой экспериментальной версии удаленного тестирования.

  • Установите необходимые зависимости в целевой среде. Это означает, что, если вы хотите выполнять тесты для .NET 3.1 в контейнере Linux, необходимо убедиться, что в контейнере установлена версия .NET 3.1 с помощью Dockerfile. Когда-нибудь мы будем рады создать процесс установки, обеспечивающий беспроблемный прием любых зависимостей тестов, но пока основную часть подготовки среды мы оставляем для спецификации пользователя.
  • Отслеживайте состояние подключения к удаленной среде на панели "Выходные данные > Тесты". Например, если контейнер остановлен, на панели "Выходные данные > Тесты" будет отображаться сообщение. Мы можем охватить не все сценарии, поэтому запланируйте проверку выходных данных, если кажется, что соединение потеряно. В частности, если для области выходных данных не задано "Тест", сообщение может отобразиться не сразу. Мы все еще экспериментируем с оптимальной моделью уведомлений при потере соединения и ждем ваших отзывов. Если подключение разорвано, можно использовать раскрывающийся список "Удаленная среда тестирования" в обозревателе тестов, чтобы снова установить подключение к локальной среде, а затем снова выбрать удаленную среду для повторного подключения.
  • В экспериментальной предварительной версии доступны только тесты .NET. Мы знаем, что пользователи ожидают поддержку удаленных тестов для C++, и работаем в этом направлении.

Как испытать удаленное тестирование?

  • Официальные документы будут доступны после экспериментального периода. А пока вот что вы можете сделать, чтобы приступить к тестированию.
  • Среды указываются с помощью testenvironments.json в корневом каталоге решения. Структура файла JSON соответствует схеме ниже.
{
    "version": "1", // value must be 1
    "environments": [
        { "name": "<unique name>", ... },
        ...
    ]
}
  • Подключения к локальному контейнеру
    • Чтобы подключиться к контейнеру, запущенному локально, необходим Docker Desktop на локальном компьютере. При необходимости включите интеграцию WSL2 для повышения производительности.
    • Для Dockerfile среду можно указать в testEnvironments.json в корневом каталоге решения.
          {
          "name": "<name>",
          "localRoot": "<path to local environment>", // optional
          "type": "docker",
          "dockerImage": "<docker image tag>",
          }
      
      Пример:
      {
      "version": "1",
      "environments": [
          {
          "name": "linux dotnet-core-sdk-3.1",
          "type": "docker",
          "dockerImage": "testenv"
          }
      ]
      }
      
    • Ниже приведен пример Dockerfile для выполнения тестов для .NET 3.1.
      FROM mcr.microsoft.com/dotnet/core/sdk:3.1
      
    • Создайте контейнер, выполнив следующую команду (включая "." в конце): docker build -t <docker image name> -f <path to Dockerfile> ..
  • Локальные подключения WSL2
    • Необходимо включить интеграцию WSL2 на локальном компьютере.
    • Среду можно указать в testEnvironments.json в корневом каталоге решения по следующей схеме.
      {
      "version": "1",
      "environments": [
          {
          "name": "WSL-Ubuntu",
          "type": "wsl",
          "wslDistribution": "Ubuntu"
          }
      ]
      }
      
  • SSH-подключения
    • Чтобы добавить или удалить SSH-подключения, последовательно выберите "Сервис > Параметры > Кросс-платформенный > Диспетчер подключений". Нажмите нажать кнопку "Добавить", чтобы ввести имя узла, порт и все необходимые учетные данные.
    • Среду можно указать в testEnvironments.json в корневом каталоге решения.
      {
      "version": "1",
      "environments": [
          {
          "name": "ssh-remote",
          "type": "ssh",
          "remoteUri": "ssh://user@hostname:22"
          }
      ]
      }
      
  • Активная среда выбирается с помощью раскрывающегося списка на панели инструментов обозревателя тестов. В настоящее время может быть активна только одна тестовая среда.

Раскрывающийся список удаленных сред тестирования в Обозревателе тестов

  • После выбора среды выполняется обнаружение тестов и они запускаются в новой среде.

Обнаружение и выполнение тестов в удаленных средах

  • Теперь вы можете выполнять и отлаживать тесты в удаленной среде.

    Просмотр результатов теста из удаленной среды в Обозревателе тестов

  • Обозреватель тестов может предложить установку некоторых недостающих компонентов среды и попытаться установить их, но основную часть подготовки среды мы оставляем для спецификации пользователя.

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

Горячая перезагрузка для Обозревателя тестов в Visual Studio позволяет выполнять тесты с небольшими изменениями без необходимости повторной сборки.

  • Эта возможность доступна только в проектах для .NET 6, и вы должны подключить ее в разделе "Сервис" > "Параметры" > "Тест".

Снимок экрана Visual Studio с включением параметра Горячей перезагрузки в разделе "Сервис" > "Параметры" > "Тест".

  • Когда эта функция включена, тесты обновляются даже при несохраненных изменениях в редакторе. Мы не выполняем сборку, поэтому двоичные файлы в соответствующей папке на диске не изменяются. Это означает, что возможны расхождения между файлами на диске и результатами теста в Visual Studio. Чтобы устранить эти проблемы, перед записью файлов после изменения выполните полную сборку, нажав клавиши CTRL + SHIFT + B. При любой явной сборке результаты тестов с Горячей перезагрузкой будут заменены на результаты обычных тестов с полной сборкой.

  • Существуют определенные типы изменений, которые не фиксируются Горячей перезагрузкой. В этих случаях по умолчанию используется прежний механизм с выполнением полной сборки. Обратите внимание, что отслеживаются только изменения в Visual Studio. В случае непрозрачных изменений в редакторе, например изменения целевых объектов, может потребоваться полная сборка.

  • При наличии определенных крупных изменений (например, переименования 1000 методов и более) Горячая перезагрузка может потребовать большего времени, чем обычная повторная сборка. В таких случаях в области вывода появится сообщение, предлагающее пользователям выполнить полную сборку, а не дожидаться Горячей перезагрузки.

  • Трассировка стека при использовании Горячей перезагрузки в Обозревателе тестов пока не доступна. Если она необходима, рекомендуем выполнить полную сборку.

Инструменты тестирования

  • Показывать в обозревателе тестов (CTRL + E,S) . Это возможность переходить от расположения курсора в методе теста в редакторе к расположению теста в обозревателе тестов. Это похоже на функцию "Синхронизация с активным документом", выделяющую документ, над которым вы сейчас работаете, в Обозревателе решений. Это одна из функций, набравших больше всего голосов в сообществе разработчиков. Спасибо всем, кто проголосовал и помог нам расставить приоритеты. Функция "Показывать в обозревателе тестов" также доступна в контекстном меню редактора, в тестовом глифе CodeLens и при щелчке правой кнопкой мыши в Обозревателе решений.

    "Показывать в обозревателе тестов" в контекстном меню "Показывать в обозревателе тестов" в CodeLens

  • Обновление поддержки нагрузочных веб-тестов и закодированных тестов пользовательского интерфейса. Средство записи нагрузочных веб-тестов доступно в Visual Studio 2022. Средство записи закодированных тестов пользовательского интерфейса не будет включено в Visual Studio 2022. Вы по-прежнему сможете выполнять закодированные тесты пользовательского интерфейса и создавать новые тесты путем написания кода в Visual Studio 2022, но средство записи полагается на 32-разрядные зависимости, которые нецелесообразно переносить. Вы можете параллельно установить Visual Studio 2019, чтобы использовать средство закодированных тестов пользовательского интерфейса. Нагрузочные веб-тесты и закодированные тесты пользовательского интерфейса были объявлены нерекомендуемыми в версии 2019, и мы планируем удалить их из продукта, когда сможем уменьшить воздействие на пользователей. Мы настоятельно рекомендуем пользователям, заинтересованным в веб-тестах пользовательского интерфейса, перейти на новый кросс-платформенный инструмент веб-тестирования с открытым кодом — Playwright. Помимо поддержки всех основных браузеров и улучшенной обработки асинхронного кода, Playwright также оснащен встроенными функциями записи тестов.

Надежные расположения

  • В рамках изменения параметров доверия мы удалили проверку "Веб-метка безопасности" и добавили диалоговое окно предупреждения, которое отображается при попытке открыть код (например, файлы, проекты или папки), не считающийся доверенным.
  • Теперь код можно делать доверенным в текущей папке или в родительской папке
  • Создаваемые пользователем проекты автоматически добавляются в пользовательский список доверенных расположений.
  • Возможность пропускать проверки доверия для временных расположений, создаваемых функциями Visual Studio

Перед открытием содержимого (например, решения, проекта, файла или папки) в интегрированной среде разработки мы проверим, предоставлялось ли в прошлом доверие расположению папки.

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

Примечание. Хотя эта функция сейчас по умолчанию отключена, вы можете включить ее, выбрав "Параметры" > "Параметры доверия" > "Требовать решения о доверии перед открытием содержимого".

Обновления узла внешних источников

Узел "Внешние источники" в Обозревателе решений теперь также поддерживает C++. Кроме того, мы добавили новый вложенный узел, который предоставляет все модули с еще не загруженными символами.

Узел "Внешние источники" в Обозревателе решений с поддержкой C++

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

Меню "Внешние источники"

Обновленные значки

  • Мы работаем над обновлением пользовательского интерфейса для Visual Studio 2022 и представляем новые значки для интегрированной среды разработки, чтобы улучшить согласованность, понятность и узнаваемость.

Примеры новых значков с темным и светлым фоном

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

Мы обновили панели инструментов приложения и параметры Горячей перезагрузки XAML, чтобы нагляднее показать, что они связаны именно с Горячей перезагрузкой XAML, а не с Горячей перезагрузкой .NET.

Обновленная панель инструментов в приложениях XAML

Мы также упростили область параметров, упорядочив вместе общие параметры.

Обновленная панель параметров XAML

Динамический просмотр XAML

XAML Live Preview теперь доступен для разработчиков WPF, UWP, WinUI и Xamarin.Forms, запускающих приложения в Android Emulator или как классические приложения UWP. Live Preview захватывает пользовательский интерфейс работающего приложения и переносит его в закрепленное окно в Visual Studio. Это упрощает использование Горячей перезагрузки XAML для изменения приложения, так как изменения отображаются непосредственно в Visual Studio без необходимости перехода между запущенным приложением и Visual Studio при динамическом изменении кода XAML.

Динамический просмотр пользовательского интерфейса классических приложений XAML

Чтобы начать работу:

  • Запуск поддерживаемого приложения с помощью отладчика
  • Включите функцию динамического просмотра XAML, введя запрос "Динамический просмотр XAML" в режиме быстрого поиска или нажав кнопку "Показывать динамический просмотр XAML" на панели инструментов в приложении.

После запуска интерфейса будут доступны следующие функции.

  • Прокрутка и масштабирование. Вы можете сдвигать и уменьшать размер окна, которое захватывает пользовательский интерфейс приложений. Это позволяет настроить его размер для отображения всего приложения или только тех частей, которые вы собираетесь изменить. Сдвигом и прокруткой можно управлять с помощью сенсорной панели (прокрутка двумя пальцами), также вы можете использовать колесо прокрутки мыши или нажать клавишу CTRL и щелкнуть левой кнопкой мыши для перетаскивания содержимого.
  • Линейки. Вы можете добавить одну горизонтальную и вертикальную линейку или несколько поверх запущенного приложения. Эти линии можно затем переместить в нужное расположение с помощью мыши или клавиатуры. При перемещении линеек с помощью клавиатуры нажимайте на клавиши со стрелками для точного позиционирования или на клавишу CTRL и стрелки для быстрого позиционирования. Вы также можете удалить линейки, щелкнув их мышью и нажав клавишу DELETE.
  • Выбор элемента и советы. С помощью выбора элементов можно выбрать элемент XAML, который вы хотите изменить, используя ту же функцию, что и в динамическом визуальном дереве или на панели инструментов приложения. После выбора можно включить новую функцию советов, чтобы получить дополнительные сведения о выбранном элементе, такие как шрифты, цвета, сведения о полях и заполнении, а также многое другое. При использовании выбора элементов следует включить предварительный просмотр выбранного элемента (с помощью кнопки динамического визуального дерева на панели инструментов или в разделе "Отладка > Параметры > Параметры Горячей перезагрузки"), чтобы перейти к исходному XAML.
  • Переключение окон. Вы можете выбрать, какие из окон приложения будут захвачены.

Улучшенный интерфейс привязки XAML

  • Улучшены значки привязки данных в инспекторе свойств. Теперь можно быстро получить доступ к диалоговому окну "Привязка данных", щелкнув значок цилиндра рядом со свойством. Чтобы удалить привязку, можно щелкнуть значок "x".

Значки привязки в инспекторе свойств

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

Вкладка "Привязка" на панели быстрых действий

  • В диалоговое окно "Привязка данных" добавлено поле со списком "Целевое свойство" для быстрого выбора свойства.

Обновленное диалоговое окно "Привязка данных" с полем со списком "Целевое свойство"

Основные проблемы, за которые голосовало Сообщество разработчиков

См. полный список исправлений от Сообщества разработчиков для этого выпуска.


Известные проблемы

Просмотрите все открытые проблемы и доступные решения в Visual Studio 2022, перейдя по ссылке ниже.


Отзывы и предложения

Мы будем рады узнать ваше мнение! Вы можете сообщить о проблеме или предложить функцию . Feedback Icon с помощью значка отправить отзыв в правом верхнем углу установщика или интегрированной среды разработки Visual Studio или из справки > отправить отзыв. Вы можете отслеживать проблемы в сообществе разработчиков Visual Studio, позволяющем добавлять комментарии или искать решения. Кроме того, вам доступна бесплатная поддержка в чате по вопросам с установкой.


Блоги

Воспользуйтесь аналитикой и рекомендациями с сайта Developer Tools Blogs. Там вы найдете актуальные сведения обо всех новых выпусках и сможете читать публикации с подробным анализом самых разных функций.


К началу страницы