Новые возможности для C++ в Visual Studio 2022
Visual Studio 2022 содержит множество обновлений и исправлений в компилятор и средства Microsoft C++. Visual Studio IDE также предлагает значительные улучшения производительности и продуктивности и теперь работает в виде собственного 64-разрядного приложения.
- Дополнительные сведения о новых возможностях visual Studio см. в статье "Новые возможности Visual Studio 2022".
- Дополнительные сведения о новых возможностях документации по C++ см . в документации по Microsoft C++: новые возможности.
- Сведения о датах сборки версий см. в разделе "Журнал выпусков Visual Studio 2022".
Новые возможности C++ в Visual Studio версии 17.12
Выпущено в ноябре 2024 г.
Дополнительные сведения | Смотрите |
---|---|
Новые возможности для разработчиков C++ | Новые возможности для разработчиков C++ в Visual Studio 2022 17.12 |
Стандартная библиотека (STL) объединяет функции C++26 и C++23, разрешения проблем LWG, улучшения производительности, улучшенное поведение и исправленные ошибки | Журнал изменений STL 17.12 |
Новые возможности интегрированной среды разработки Visual Studio 17.12 | Заметки о выпуске Visual Studio 2022 версии 17.12 |
Улучшения соответствия языка C++ в Visual Studio 2022 17.12 | Улучшения соответствия C++, изменения поведения и исправления ошибок в Visual Studio 2022 17.12 |
Краткий обзор некоторых новых функций:
- Улучшения стандартной библиотеки
- Реализация диапазонов форматирования (P2286R8) C++23 завершена. Добавлены модули форматирования для адаптеров
stack
контейнеров иqueue
priority_queue
. - Добавлены многомерные операторы подстрочного, которые также поддерживают
<mdspan>
. Например:print("m[{}, {}]: '{}'; ", i, j, m[i, j])
.
- Реализация диапазонов форматирования (P2286R8) C++23 завершена. Добавлены модули форматирования для адаптеров
- Разработка игр в C++
- Непосредственно откройте проекты Unreal Engine в Visual Studio без создания файла решения Visual Studio, упаковав проект Unreal Engine. Дополнительные сведения см. в статье "Работа с проектами Unreal Engine" в Visual Studio.
- Аргументы командной строки можно указать при отладке непосредственно на панели инструментов. Дополнительные сведения см. в разделе "Настройка аргументов командной строки" для проектов Unreal Engine.
- Аналитика сборки
- Вы можете запустить Build Insights для выбранных файлов. Выберите нужные файлы в Обозреватель решений, щелкните правой кнопкой мыши и выберите команду "Запустить аналитику сборки" для выбранных файлов:
- Результаты Build Insights можно фильтровать по проекту. Нажмите кнопку фильтра в заголовке столбца фильтра и выберите проекты, для которого нужно просмотреть результаты:
- Щелкните значок вопросительного знака в окне "Аналитика сборки", чтобы просмотреть краткое описание вкладок в окне "Аналитика сборки" и ссылку на документацию для подробного объяснения:
- GitHub Copilot
- Вы можете щелкнуть Ask Copilot рядом со значением переменной, чтобы получить аналитические сведения, управляемые искусственным интеллектом, в том, что привело к текущему состоянию. Например, следующая программа имеет ошибку вне одного цикла в состоянии цикла:
Если щелкнуть значок Ask Copilot для переменнойКод, который вызвал эту проблему: for (auto it = h.animals_.begin(); он <= h.animals_.end(); it++.
it
, вы узнаете, почему это<NULL>
:Эта ошибка находится внутри функции, определенной как int calculate_number_of_cats(const house&h). Сообщение GitHub Copilot говорит: "Значение выражения null, что означает, что итератор не указывает на любой допустимый элемент в векторе animals_. В контексте программы предполагается перебор animals_ вектора в объекте дома для подсчета количества объектов кота. Почему значение null. На основе локальных и контекста стека вызовов: объект дома имеет пустой вектор animals_ (size=0). Условие цикла <= h.animals_.end() неверно. Это должно быть != h.animals_.end()."
- Чтобы получить справку об ошибке и предложенном исправлении, щелкните "Попросить Copilot" в списке ошибок Visual Studio. Например:
Если щелкнуть Ask Copilot, он сообщает об ошибке:Значок Ask Copilot выделен рядом с ошибкой, которая unique_ptr пытается ссылаться на удаленную функцию.
Сообщение Copilot говорит: "Ошибка возникает из-за попытки копирования объектов std::unique_ptr, так как std::unique_ptr не может быть скопировано. Чтобы устранить эту проблему, я изменил цикл, чтобы использовать ссылку, чтобы избежать копирования объектов std::unique_ptr. Таким образом, цикл выполняет итерацию ссылок на объекты std::unique_ptr, что допускается".
- Отладка
- Новые визуализаторы отладки для
mutex
,recursive_mutex
иmove_iterator
. - Теперь отладчик отображает встроенные возвращаемые значения:
- Новые визуализаторы отладки для
Новые возможности C++ в Visual Studio версии 17.11
Выпущено за август 2024 г.
Дополнительные сведения | Смотрите |
---|---|
Новые возможности для разработчиков C++ | Новые возможности для разработчиков C++ в Visual Studio 2022 17.11 |
Стандартные функции библиотеки (STL), объединенные функции C++26 и C++23, отчеты о дефектах C++20, разрешения проблем LWG, улучшения производительности, улучшенное поведение и исправленные ошибки | Журнал изменений STL 17.11 |
Новые возможности интегрированной среды разработки Visual Studio 17.11 | Заметки о выпуске Visual Studio 2022 версии 17.11 |
Улучшения соответствия языка C++ в Visual Studio 2022 17.11 | Улучшения соответствия C++, изменения поведения и исправления ошибок в Visual Studio 2022 17.11 |
Частичный список новых функций:
Улучшения стандартной библиотеки
- Форматированная реализация выходных данных теперь включает
std::range_formatter
и форматируетstd::pair
для иstd::tuple
. - Добавлена поддержка
std::println()
без аргументов. Это печатает пустую строку, как предлагается в P3142R0. - Улучшенная векторизация для нескольких алгоритмов, включая
replace_copy()
,replace_copy_if()
,find_first_of()
ranges::replace_copy_if
ranges::replace_copy
иranges::find_first_of
, для 8-разрядных и 16-разрядных элементов,mismatch()
,find()
count()
ranges::iota
ranges::mismatch
ranges::count
ranges::find
ranges::find_last
и .
- Форматированная реализация выходных данных теперь включает
Разработка игр в C++
- Теперь вы можете добавить общие шаблоны классов Unreal Engine, модули и подключаемые модули из Visual Studio. Дополнительные сведения см. в разделе "Добавление классов, модулей и подключаемых модулей Unreal Engine" в Visual Studio.
- Новая панель инструментов Unreal Engine обеспечивает быстрый доступ к связанным действиям Unreal Engine из Visual Studio. Панель инструментов позволяет быстро подключиться к процессам Unreal Engine, повторно сканировать кэш схемы, быстро получить доступ к журналу Unreal Engine и быстро получить доступ к странице конфигурации Unreal Engine для Visual Studio. Дополнительные сведения см. на панели инструментов Unreal Engine.
- Теперь можно фильтровать результаты трассировки по проекту. Кроме того, в каждой строке отображаются относительный путь и имя файла, а не полный путь. Группирование результатов в представлении включенных файлов также улучшается:
В представлении включенных файлов есть новый столбец для проекта. Выбран столбец Project, например (Select All), CompilerIdC, OpenAL, common и т. д. Включенные файлы перечислены по относительному пути и имени файла и группируются вместе.
Отладка CMake
- Теперь вы можете выполнить отладку скриптов и
CMakeLists.txt
файлов CMake в отладчике Visual Studio для проектов CMake, предназначенных для Linux с помощью подсистема Windows для Linux (WSL) или SSH. Чтобы запустить сеанс отладки CMake в Visual Studio, установите точку останова вCMakeLists.txt
файле и перейдите в раздел "Настройка кэша проекта>" с помощью отладки CMake.
- Теперь вы можете выполнить отладку скриптов и
GitHub Copilot
- При наведении указателя мыши на символы в редакторе кода нажмите кнопку "Рассказать мне больше " в диалоговом окне "Краткие сведения", чтобы узнать больше о заданном символе:
Окно "Быстрая информация" отображается над функцией. Выделена ссылка "Сообщить мне больше".
- GitHub Copilot может создавать предложения именования для идентификаторов (переменных, методов или классов) на основе использования идентификатора и стиля кода.
В диалоговом окне "Переименование" есть поле "Новое имя" со раскрывающимся списком, где показаны следующие варианты: text_color, font_color, display_color, console_color и menu_text_color.
Вам нужна активная подписка на GitHub Copilot. Щелкните правой кнопкой мыши переменную, которую вы хотите переименовать, и выберите " Переименовать " (
Ctrl+R
,Ctrl+R
). Щелкните значок GitHub Copilot sparkle, чтобы создать предложения именования.Отладка
- Условные точки останова в C++ быстрее.
Улучшения диагностики
- Улучшено диагностика при вызове
std::get<T>
std::tuple
с несколькими экземплярамиT
в его аргументах шаблона. MSVC, используемый для отчета:
error C2338: static_assert failed: 'duplicate type T in get<T>(tuple)'
.
Теперь он сообщает:
error C2338: static_assert failed: 'get<T>(tuple<Types...>&) requires T to occur exactly once in Types.(N4971 [tuple.elemm]/5)'
- Улучшена диагностика, если
std::ranges::to
не удается создать запрошенный результат. MSVC, используемый для отчета:
error C2338: static_assert failed: 'the program is ill-formed per N4950 [range.utility.conv.to]/2.3'
Теперь он сообщает:
error C2338: static_assert failed: 'ranges::to requires the result to be constructible from the source range, either by using a suitable constructor, or by inserting each element of the range into the default-constructed object. (N4981 [range.utility.conv.to]/2.1.5)'
- Улучшено диагностика при вызове
Новые возможности C++ в Visual Studio версии 17.10
Выпущено в мае 2024 г.
Дополнительные сведения | Смотрите |
---|---|
Новые возможности для разработчиков C++ | Новые возможности разработчиков C++ в Visual Studio 2022 17.10 |
Стандартные функции библиотеки (STL), объединенные функции C++26 и C++23, отчеты о дефектах C++20, разрешения проблем LWG, улучшения производительности, улучшенное поведение и исправленные ошибки | Журнал изменений STL 17.10 |
Новые возможности интегрированной среды разработки Visual Studio 17.10 | Заметки о выпуске Visual Studio 2022 версии 17.10 |
Улучшения соответствия языка C++ в Visual Studio 2022 17.10 | Улучшения соответствия C++, изменения поведения и исправления ошибок в Visual Studio 2022 17.10 |
Частичный список новых функций:
- Обновление набора инструментов MSVC: версия набора инструментов MSVC обновляется с версии 19.39 до 19.40. Это может повлиять на проекты с предположениями версий. Дополнительные сведения о некоторых способах, в которых это влияет на проекты, предполагающие, что версии MSVC являются всеми выпусками 19.3X для Visual Studio 2022, см. в статье MSVC Toolset Minor Version Number 14.40 в VS 2022 версии 17.10.
- Усовершенствования стандартной библиотеки: стандартная библиотека добавила поддержку P2510R3 указателей форматирования, которая приводит набор описателей формата для указателей при использовании
std::format
дополнительных значений с теми, которые уже существуют для целых чисел. Улучшеныstd::min_element
векторные реализации ,std::ranges::min
а также друзья. - Build Insights: теперь предоставляет сведения о создании экземпляра шаблона. Просмотр представлений шаблонов для Аналитики сборки в Visual Studio или в представлении шаблонов Pure Virtual C++ — представление шаблонов для Build Insights в записи Visual Studio .
- Подключаемый модуль Unreal Engine: существует новая функция согласия для подключаемого модуля Unreal Engine для запуска в фоновом режиме, что снижает затраты на запуск. Это функция согласия, активируемая с помощью компонента Tools>Options>Unreal Engine.
- Новые возможности Для Linux: ознакомьтесь с новыми функциями разработки Linux в Visual Studio.
- Целевые объекты CMake: теперь можно закрепить целевые объекты в представлении целевых объектов CMake.
- диспетчер подключений пользовательском интерфейсе. Взаимодействие с пользователем обеспечивает более простой интерфейс при подключении к удаленным системам. Дополнительные сведения см. в разделе "Улучшения удобства использования" в диспетчер подключений Visual Studio.
- Комментарии запроса на вытягивание. Теперь вы можете просматривать комментарии GitHub и Azure DevOps непосредственно в рабочем файле. Включите флаг функции, примечания запроса на вытягивание в >функциях предварительной версии среды>и проверьте ветвь запроса на вытягивание, чтобы приступить к работе.
- Содержимое, созданное искусственным интеллектом: GitHub Copilot теперь может создавать черновики описаний запроса на вытягивание. Требуется активная подписка GitHub Copilot. Попробуйте его, щелкнув значок "Добавить созданный запрос на вытягивание " в окне "Создать запрос на вытягивание".
- Предварительный просмотр изображения: наведите указатель мыши на путь к изображению, чтобы просмотреть предварительный просмотр с подробными сведениями о размере. Размер ограничен 500 пикселей в ширину и высоту.
Указатель мыши наведите указатель мыши на строку std::filesystem::p ath vs_logo_path = ".. /images/vs_logo.png". В нижней части отображается предварительная версия логотипа Visual Studio и сведения о размере 251 x 500 пикселей и 13,65 КБ.
- Точка останова или создание точки трассировки. Теперь можно создавать условные точки останова или точки трассировки непосредственно из выражений в исходном коде из меню правой кнопкой мыши. Это работает над именами свойств или полей и значениями из авто, локальных элементов, окон просмотра или подсказок данных.
- Присоединение к диалогу процесса. Функциональные возможности, предоставляемые диалогом "Присоединение к процессу", являются более удобными для пользователя. Теперь вы можете легко переключаться между представлениями дерева и списка, упорядочивать процессы лучше с помощью свертых разделов и выбирать типы кода с упрощенной папкой со списком. Кроме того, функция "Выбрать или отслеживать окно" теперь проще использовать, позволяя двустороннее отслеживание: выбор процесса выделяет его окно и щелчок окна выбирает его процесс.
- Интеграция GitHub Copilot: расширения GitHub Copilot и Copilot Chat теперь унифицированы и теперь отправляются непосредственно в Visual Studio. Чтобы установить его, установите компонент GitHub Copilot в Visual Studio Installer:
Интерфейс GitHub Copilot находится в правом верхнем углу Visual Studio. Чтобы использовать его, вам нужна активная подписка на GitHub Copilot.
Кнопка GitHub Copilot отображается в правом верхнем углу Visual Studio. Он имеет параметры для открытия окна чата, параметров GitHub Copilot, получения дополнительных сведений и управления подпиской copilot.
Новые возможности C++ в Visual Studio версии 17.9
Выпущено за февраль 2024 г.
Дополнительные сведения | Смотрите |
---|---|
Новые возможности для разработчиков C++ | Новые возможности разработчиков C++ в Visual Studio 2022 17.9 |
Стандартная библиотека (STL) объединяет функции C++23, улучшения производительности, улучшенное поведение, разрешение проблем LWG и исправленные ошибки | Журнал изменений STL 17.9 |
Новые возможности интегрированной среды разработки Visual Studio 17.9 | Заметки о выпуске Visual Studio 2022 версии 17.9 |
Улучшения соответствия языка C++ в Visual Studio 2022 17.9 | Улучшения соответствия C++, изменения поведения и исправления ошибок в Visual Studio 2022 |
Сводка обновлений серверной части C++ | Обновления серверной части MSVC с Visual Studio 2022 версии 17.3 |
Частичный список новых функций:
#include
диагностика, который предоставляет подробный анализ#include
ваших директив. Активируйте эту функцию, щелкнув правой#include
кнопкой мыши директивы #include, включите директиву>#include диагностика. Над каждым из них#include
указано количество ссылок на код.#include
Щелкните ссылку на ссылку, чтобы перейти к месту использования кода из этого файла заголовка. Чтобы просмотреть время сборки#include
директив, запустите Build Insights, перейдя к сборке>Run Build Insights в сборке решения.>Выше # include является ссылкой **reference** и многие ссылки на этот # include file (в данном случае 1). Время сборки также указано (в этом случае меньше 1/2 секунды).
- Визуализация макета памяти, в которой показано, как организована память для классов, структур и профсоюзов. Наведите указатель мыши на тип и выберите ссылку "Макет памяти" в краткой информации , чтобы открыть выделенное окно, отображающее макет памяти выбранного типа. Наведите указатель мыши на отдельные типы данных в этом окне, предоставляя подробные сведения о их размере и смещение в типе.
В окне макета памяти отображается содержимое класса Змеи. В нем показаны смещения памяти различных полей класса, таких как классы Point для расположения головы и тела, оценки и т. д.
- Теперь можно указать собственный пользовательский исполняемый файл CMake. Эта функция полезна, если вы хотите использовать определенную версию CMake, которая не поставляется с Visual Studio. Перейдите к параметрам инструментов>и выберите "Общие" CMake.> Выберите "Включить настраиваемый исполняемый файл CMake" и укажите путь к каталогу исполняемого файла CMake.
Диалоговое окно параметров CMake с параметром "Включить настраиваемый исполняемый файл CMake" и выделенным полем "CMake Исполняемый каталог".
- Улучшена технология IntelliSense для проектов Unreal Engine.
- Улучшена поддержка C++23:
std::format
иformattable
std::span
,format_kind
range_format
аset_debug_format()
также как часть P2286R8 диапазонов<mdspan>
форматирования на P0009R18 и последующие изменения в формулировках, примененные к стандарту C++23. Кроме того,format()
можно форматировать указатели на P2510R3.
Новые возможности C++ в Visual Studio версии 17.8
Выпущено за ноябрь 2023 г.
Дополнительные сведения | Смотрите |
---|---|
Новые возможности для разработчиков C++ | Новые возможности для разработчиков C++ в Visual Studio 2022 17.8 |
Стандартная библиотека (STL) объединяет функции C++26, C++23, расширения C++20, разрешения проблем LWG, улучшения производительности, улучшенное поведение и исправленные ошибки. | Журнал изменений STL 17.8 |
Новые возможности интегрированной среды разработки Visual Studio 17.8 | Заметки о выпуске Visual Studio 2022 версии 17.8 |
Улучшения соответствия языка C++ в Visual Studio 2022 17.8 | Улучшения соответствия C++, изменения поведения и исправления ошибок в Visual Studio 2022 |
Обзор улучшений C++ в Visual Studio, VS Code и vcpkg в течение 2023 г. | Год улучшений C++ |
Частичный список новых функций:
- Структурированные диагностика C++ в окне вывода и новое окно сведений о проблеме, которое содержит дополнительные сведения об ошибке. Дополнительные сведения см. в разделе "Структурированные выходные данные SARIF" и "Сведения о проблеме".
- Функция, которая позволяет визуализировать размер и выравнивание классов, структур, профсоюзов, базовых типов или перечислений даже до компиляции кода. Наведите указатель мыши на идентификатор и краткие сведения о размере и выравнивании.
- Функция, предполагающая, когда следует пометить функции-члены
const
, так как они не изменяют состояние объекта. Наведите указатель мыши на функцию-член и щелкните значок лампочки, чтобы пометить функцию какconst
. - Visual Studio теперь предложит пометить глобальные функции как статические с помощью значка отвертки, отображаемого именем функции. Щелкните значок отвертки, чтобы пометить функцию как статическую.
- Неиспользуемые директивы #include не используются в редакторе. Вы можете навести указатель мыши на неактивное включение и использовать меню лампочки, чтобы удалить их или все неиспользуемые. Вы также можете добавить
#include
директивы для сущностей, которые косвенно включены через другие заголовки. Дополнительные сведения см. в разделе "Очистка C/C++ в Visual Studio". - Дополнительная поддержка Unreal Engine:
- Адаптер тестирования Unreal Engine позволяет обнаруживать, запускать, администрировать и отлаживать тесты Unreal Engine без выхода из интегрированной среды разработки Visual Studio.
- С помощью фрагментов кода Unreal Engine вы можете найти распространенные конструкции Unreal Engine в виде фрагментов в списке участников.
- Сборка Insights теперь интегрирована с Visual Studio 2022 и работает с проектами MSBuild и CMake с помощью MSVC. Теперь можно просмотреть дополнительные сведения о компиляции функции, например о том, сколько времени потребовалось для компиляции и количества ForceInlines, а также о влиянии файлов заголовков на время сборки. Дополнительные сведения см. в руководстве по устранению неполадок при настройке времени сборки и руководстве. Устранение неполадок, влияющих на время сборки файла заголовка.
- Поддержка удаленного модульного теста Linux теперь позволяет запускать тесты CTest и GTest на удаленных компьютерах Linux из обозревателя тестов Visual Studio так же, как и локальные тесты.
Новые возможности C++ в Visual Studio версии 17.7
Выпущено за август 2023 г.
Дополнительные сведения | Смотрите |
---|---|
Новые возможности для разработчиков C++ | Новые возможности разработчиков C++ в Visual Studio 2022 17.7 |
Новые возможности C++ для разработки игр | Развязывание возможностей Visual Studio 2022 для разработки игр на C++ |
Стандартная библиотека (STL) объединяет функции C++23, решения проблем LWG, улучшения производительности, улучшенное поведение и исправленные ошибки | Журнал изменений STL 17.7 |
Новые возможности интегрированной среды разработки Visual Studio 17.7 | Заметки о выпуске Visual Studio 2022 версии 17.7 |
Улучшения соответствия языка C++ в Visual Studio 2022 17.7 | Улучшения соответствия C++, изменения поведения и исправления ошибок в Visual Studio 2022 |
Частичный список новых функций:
- Ускорить отладку сеансов и ускорить загрузку проекта
- Пошаговая визуализация расширения макроса
- Скачать один щелчком мыши для подсистема Windows для Linux (WSL)
- Улучшенная поддержка комментариев Doxygen
- C++ Build Insights для разработки игр
/std:clatest
Добавлен для компилятора C.- Улучшения проекта Unreal Engine, такие как более быстрая цветовая кодировка IntelliSense и синтаксис, возможность найти все ссылки на схему Unreal Engine и многое другое.
Новые возможности C++ в Visual Studio версии 17.6
Выпущено в мае 2023 г.
Дополнительные сведения | Смотрите |
---|---|
Новые возможности для разработчиков C++ | Новые возможности для разработчиков C++ в Visual Studio 2022 17.6 |
Стандартная библиотека (STL) объединяет функции C++23, решения проблем LWG, улучшения производительности, улучшенное поведение и исправленные ошибки | Журнал изменений STL 17.6 |
Новые возможности интегрированной среды разработки Visual Studio 17.6 | Заметки о выпуске Visual Studio 2022 версии 17.6 |
Улучшения соответствия языка C++ в Visual Studio 2022 17.6 | Улучшения соответствия C++, изменения поведения и исправления ошибок в Visual Studio 2022 |
Частичный список новых функций включает в себя:
- Отладка скрипта CMake
- Встроенная поддержка языка заливки высокого уровня (HLSL)
- Средство просмотра журнала Unreal Engine
- VCPKG теперь добавляется по умолчанию
- Начальная поддержка C++20 в проектах C++/CLI и некоторые функции стандартной библиотеки C++23 для диапазонов.
Новые возможности C++ в Visual Studio версии 17.5
Выпущено за февраль 2023 г.
Дополнительные сведения | Смотрите |
---|---|
Новые возможности для разработчиков C++ | Новые возможности для разработчиков C++ в Visual Studio 2022 17.5 |
Стандартная библиотека (STL) объединяет функции C++23, решения проблем LWG, улучшения производительности, улучшенное поведение и исправленные ошибки | Журнал изменений STL 17.5 |
Новые возможности интегрированной среды разработки Visual Studio 17.5 | Заметки о выпуске Visual Studio 2022 версии 17.5 |
Частичный список новых функций включает в себя:
std::move
, ,std::forward
std::move_if_noexcept
иstd::forward_like
теперь не создают вызовы функций в созданном коде даже в режиме отладки. Это изменение позволяет избежать именованных приведения, вызывающих ненужные затраты в сборках отладки./permissive-
(или вариант, который подразумевает его, например/std:c++20
илиstd:c++latest
) является обязательным.Добавлен.
[[msvc::intrinsic]]
Этот атрибут можно применить к нерекурсивным функциям, состоящим из одного приведения, который принимает только один параметр.Добавлена поддержка консоли Linux в интегрированном терминале, которая позволяет выполнять ввод-вывод терминала.
Добавлена начальная экспериментальная поддержка атомарных примитивов C11 (
<stdatomic.h>
). Эту экспериментальную функцию можно включить с параметром/experimental:c11atomics
в/std:c11
режиме или более поздней версии.Добавлен новый набор экспериментальных проверок высокой достоверности в средство проверки времени существования для снижения шума.
Новая функция предварительной версии, удаленная проводник, позволяет просматривать каталог файлов на удаленных компьютерах в VS, а также отправлять и скачивать в него файлы.
Изменено управление версиями исполняемых файлов CMake, поставляемых с Visual Studio для сопоставления версий Kitware.
Добавлена поддержка Горячая перезагрузка в шаблон проекта CMake.
Перейти к определению для C++ теперь использует более тонкий индикатор операции, который занимает больше времени, заменив модальное диалоговое окно из предыдущих версий.
Начало развертывания эксперимента, предоставляющего более умные результаты в списке автозавершения и члена C++. Эта функция ранее была известна как Predictive IntelliSense, но теперь использует новый метод презентации.
Теперь мы отправим собственный набор инструментов Arm64 Clang с помощью рабочей нагрузки LLVM, что позволяет выполнять собственную компиляцию на компьютерах Arm64.
Добавлена локализация в расширение "Просмотр изображений" (это расширение доступно в Marketplace и не входит в пакет с помощью установщика Visual Studio).
Добавлена поддержка открытия окна терминала в текущий запущенный контейнер разработчика.
Улучшено расширение макросов IntelliSense. В частности, мы включили рекурсивное расширение в дополнительных контекстах, и мы добавили параметры во всплывающем окне, чтобы скопировать расширение в буфер обмена или развернуть макрос в виде встроенного.
Теперь в последовательном мониторе поддерживается одновременный мониторинг. Одновременный мониторинг позволяет отслеживать несколько портов одновременно параллельно. Нажмите кнопку "плюс", чтобы открыть другой последовательный монитор и начать работу.
Теперь можно просматривать свойства из базовых классов, измененных в ресурсе Unreal Blueprint, не выходя из Visual Studio. Дважды щелкните ссылку на схему для класса или свойства C++, чтобы открыть инспектор активов UE в Visual Studio.
Включен запуск DevContainers на удаленном компьютере Linux.
Включен выбор нескольких целевых объектов для сборки в представлении целевых объектов CMake.
Добавлена поддержка CMakePresets.json версии 5. Дополнительные сведения о новых функциях см. в документации по CMake.
Включен обозреватель тестов для параллельного создания и тестирования нескольких целевых объектов CMake.
Добавлен параметр "Открыть контейнер в терминале" в контейнеры разработки.
Реализованы стандартные функции библиотеки:
Новые возможности C++ в Visual Studio версии 17.4
Выпущено за ноябрь 2022 г.
Дополнительные сведения | Смотрите |
---|---|
Новые возможности для разработчиков C++ | Новые возможности для разработчиков C++ в Visual Studio 2022 17.4 |
Стандартная библиотека (STL) объединяет функции C++23, решения проблем LWG, улучшения производительности, улучшенное поведение и исправленные ошибки | Журнал изменений STL 17.4 |
Новые возможности интегрированной среды разработки Visual Studio 17.4 | Заметки о выпуске Visual Studio 2022 версии 17.4 |
Улучшения соответствия языка C++ в Visual Studio 2022 17.4 | Улучшения соответствия C++, изменения поведения и исправления ошибок в Visual Studio 2022 |
Частичный список новых функций в версии 17.4:
Улучшены сообщения об ошибках компилятора, чтобы обеспечить более правильную и полезную информацию, особенно для концепций.
Добавлен экспериментальный параметр
/experimental:log<directory>
MSVC для вывода структурированных диагностика SARIF в указанный каталог.Добавлена поддержка атрибутов C23 в IntelliSense и продолжалась поддержка модулей C++20.
Улучшена производительность индексирования при открытии нового решения. Крупные проекты могли видеть улучшение на 20-35% с 17,3.
Улучшена оптимизация именованных возвращаемых значений (NRVO):
- NRVO включен для случаев обработки исключений или циклов.
- NRVO включен даже
/Od
в том случае, если пользователь передает/Zc:nrvo
параметр или/std:c++20
более поздней версии или/permissive-
. - Теперь можно отключить NRVO с параметром
/Zc:nrvo-
.
Обновлена версия LLVM, поставляемая с Visual Studio до 15.0.1. Дополнительные сведения о доступных функциях см. в заметках о выпуске LLVM и Clang .
Добавлена поддержка артефактов Visual Studio для артефактов vcpkg с проектами CMake. Для проектов, включающих манифест vcpkg, среда активируется автоматически при открытии проекта. Узнайте больше об этой функции в активации среды vcpkg в записи блога Visual Studio .
Теперь вы можете использовать контейнеры разработки для проектов C++. Дополнительные сведения об этой функции см. в записи блога "Контейнеры разработки для C++ ".
IntelliSense теперь учитывает порядок предварительно включаемых заголовков, когда один из них является PCH. Ранее, когда PCH использовался через
/Yu
и принудительно включен/FI
через , IntelliSense всегда будет обрабатывать его сначала, прежде чем любые другие заголовки включены через/FI
. Это поведение не соответствовало поведению сборки. При этом изменении/FI
заголовки обрабатываются в указанном порядке.Удалены внутренние префиксы из имен CTest в обозревателе тестов.
Обновлена версия CMake, поставляемая с Visual Studio, до версии 3.24.1. Дополнительные сведения о доступных выпусках см. в заметках о выпуске CMake.
Обновление пакета SDK для Android:
- Скрипты Ant были удалены, поэтому пользователи больше не видят шаблонов на основе муравей в диалоговом окне "Новый проект". Справку по миграции из шаблонов Ant в шаблоны Gradle см. в разделе "Миграция сборок из Apache Ant"
- Добавлена поддержка сборки с помощью NDK 23 и 24
- Обновлен компонент NDK до LTS версии 23
Добавлены векторные реализации
ranges::min_element()
,ranges::max_element()
иranges::minmax_element()
Мы продолжаем отслеживать последние разработки в стандартизации C++. Поддержка этих функций C++23 доступна, в том числе
/std:c++latest
в параметрах компилятора:Добавлен параметр "Навигация после создания объявления или определения", позволяющий выбрать поведение навигации функции "Создать объявление или определение". Вы можете выбрать между просмотром (по умолчанию) или открытием документа или без навигации.
Сборки Arm64 Visual Studio теперь объединяют версии Arm64 CMake и Ninja.
Добавлена поддержка предустановок CMake версии 4. Дополнительные сведения о доступных выпусках см. в заметках о выпуске CMake.
Удаленные системные подключения с помощью диспетчер подключений теперь поддерживают SSH ProxyJump. ProxyJump используется для доступа к узлу SSH через другой узел SSH (например, для доступа к узлу за брандмауэром).
Новые возможности C++ в Visual Studio версии 17.3
Выпущено за август 2022 г.
Дополнительные сведения | Смотрите |
---|---|
Новые возможности для разработчиков C++ | Улучшения C++ в версии 17.3 |
Стандартная библиотека (STL) объединяет функции C++23, решения проблем LWG, улучшения производительности, улучшенное поведение и исправленные ошибки | Журнал изменений STL 17.3 |
Новые возможности интегрированной среды разработки Visual Studio 17.3 | Заметки о выпуске Visual Studio 2022 версии 17.3 |
Улучшения соответствия языка C++ в Visual Studio 2022 17.3 | Улучшения соответствия C++, изменения поведения и исправления ошибок в Visual Studio 2022 |
Частичный список новых функций в версии 17.3:
- Цепочка инструментов Arm64EC больше не помечена как экспериментальная и готова к использованию в рабочей среде.
- Теперь терминал Visual Studio можно использовать в качестве клиента SSH с сохраненными подключениями SSH. Установив средства C++ для Linux, откройте окно средства терминала. Раскрывающийся список терминала заполняется сохраненными подключениями. При выборе подключения откроется новое окно терминала в Visual Studio, где отображается псевдо-терминал в удаленной системе. Все элементы управления символами, цветами и осведомленностью о позиции курсора поддерживаются.
- Visual Studio теперь может добавлять шаблоны классов Unreal Engine для проектов UE. Чтобы попробовать эту функцию, убедитесь, что поддержка интегрированной среды разработки Unreal Engine выбрана в рабочей нагрузке "Игра" с помощью рабочей нагрузки C++ в установщике Visual Studio. При работе с проектом UE щелкните правой кнопкой мыши проект или папку или фильтр и выберите "Добавить>класс UE".
- Перейти к определению теперь запоминает предыдущий сигнатуры и перемещается соответствующим образом, если лучшее совпадение недоступно (например, после изменения подписи одной из пар вручную). Улучшена скорость реагирования go To All . Ранее результаты появились после остановки ввода. В новом интерфейсе результаты отображаются при вводе.
- В контекстах, требующих
enum
завершения типа (например, назначенияenum
переменных, меток регистра, возвращаемогоenum
типа и т. д.), список автозаполнения теперь фильтруется только для соответствующих перечислителей и связанных конструкций. - Добавлена поддержка NuGet PackageReference для проектов C++/CLI MSBuild, предназначенных для .NET Core. Это изменение было внесено для разблокировки смешанных баз кода от возможности внедрения .NET Core. Эта поддержка не работает для других типов проектов C++ или любых типов проектов C++, предназначенных для платформа .NET Framework. Нет планов расширить поддержку PackageReference в других сценариях C++. Команда работает над отдельными возможностями, связанными с vcpkg для сценариев, отличных от MSBuild, и для добавления дополнительных функциональных возможностей.
- Добавлено окно последовательного монитора для встроенной разработки, доступное с помощью последовательного>монитора Windows.>
- Улучшено индексирование C++ на ~66% по сравнению с 17,2.
- Обновлена версия CMake, поставляемая с Visual Studio, до версии 3.23. Дополнительные сведения о доступных доступных заметках о выпуске CMake 3.23 см. в заметках о выпуске CMake 3.23.
- Обновлены версии средств LLVM, поставляемых с Visual Studio до версии 14. Дополнительные сведения о доступных сведениях см. в заметках о выпуске LLVM и Clang .
- Обновлен набор инструментов C++ параллельно с dev 16.11 до версии 14.29.30145.00. Последняя версия набора инструментов C++ dev 16.11 содержит важные исправления ошибок, включая исправление всех оставшихся отчетов о дефектах C++20. Дополнительные сведения о исправлениях ошибок, включая отчеты о дефектах C++20 в dev 16.11, см . в заметках о выпуске Visual Studio 2019 версии 16.11.14.
- Внесены различные улучшения в интерфейсе редактора модулей C++ . Мы постоянно работаем над улучшением качества опыта, но рекомендуем вам попробовать их в 17.3. Сообщите о оставшихся проблемах с помощью Сообщество разработчиков.
Новые возможности C++ в Visual Studio версии 17.2
Выпущено май 2022 г.
Дополнительные сведения | Смотрите |
---|---|
Новые возможности для разработчиков C++ | Выпущена версия Visual Studio 2022 17.2 |
Стандартные отчеты об ошибках C++20, функции C++23, решения проблем LWG, улучшения производительности, улучшенное поведение и исправление ошибок | Журнал изменений STL 17.2 |
Новые возможности интегрированной среды разработки Visual Studio 17.2 | Заметки о выпуске Visual Studio 2022 версии 17.2 |
Улучшения соответствия языка C++ в Visual Studio 2022 17.2 | Улучшения соответствия C++, изменения поведения и исправления ошибок в Visual Studio 2022 |
Частичный список новых функций в версии 17.2.
- Добавлена поддержка компилятора функции C++23 для вывода
this
, которая доступна под флагом/std:c++latest
. - Добавлена поддержка IntelliSense для функций C++23 для вывода
this
иif consteval
. - Добавлена поддержка подсказок имени и типа встроенного параметра, переключаемая с помощью клавиш ALT+F1 или двойного нажатия клавиши CTRL. Это поведение можно настроить в разделе Tools, Options, Text Editors, C/C++, IntelliSense (Инструменты, Параметры, Текстовые редакторы, C/C++, IntelliSense).
- Добавлена экспериментальная поддержка модулей C++20 в проектах CMake. Сейчас эта поддержка доступна только для генератора Visual Studio (MSBuild).
- В версии 17.1 впервые появились представления периферийных регистров и ОСРВ для разработчиков встроенных платформ. Мы продолжаем улучшать возможности этих представлений с улучшением удобства использования в 17.2.
- Окно инструментов ОСРВ теперь по умолчанию скрыто. Это предотвращает появление окна инструментов с сообщениями об ошибках, которые не актуальны без использования ОСРВ.
- При двойном щелчке объекта ОСРВ в окне инструмента он добавляет часы для объекта.
- При выборе начальных и конечных значений указателя стека в окне инструментов ОСРВ откроется в окне памяти.
- Добавлена осведомленность о потоках для целевых объектов устройств в окне стека вызовов.
- Теперь пользователи могут щелкнуть значок для закрепления регистров, периферийных регистров или полей вверху соответствующего представления.
- Добавлены реализации оставшихся отчетов о дефектах C++20 (также известных как backports). В параметре
/std:c++20
теперь доступны все функции C++20. Дополнительные сведения о реализованных бэкпортах см. в проекте отчетов о дефектах C++20 в репозитории GitHub Microsoft/STL и в записи блога Завершение MSVC STL/std:c++20
. - Добавлены несколько возможностей библиотеки C++23, которые открывает флаг
/std:c++latest
. Дополнительные сведения о новых возможностях см. в журнале изменений репозитория STL. - Улучшена производительность начального индексирования C++ на 20 %, в зависимости от глубины графа включения.
Новые возможности C++ в Visual Studio версии 17.1
Выпущено за февраль 2022 г.
Дополнительные сведения | Смотрите |
---|---|
Новые возможности для разработчиков C++ | Visual Studio 2022 17.1 теперь доступен! |
Стандартная библиотека (STL) объединяет функции C++23, решения проблем LWG, улучшения производительности, улучшенное поведение и исправленные ошибки | Журнал изменений STL 17.1 |
Новые возможности интегрированной среды разработки Visual Studio 17.1 | Заметки о выпуске Visual Studio 2022 версии 17.1 |
Улучшения соответствия языка C++ в Visual Studio 2022 17.1 | Улучшения соответствия C++, изменения поведения и исправления ошибок в Visual Studio 2022 |
Частичный список новых функций в версии 17.1:
- Добавлен новый шаблон настройки предустановки для настройки и сборки проектов CMake в удаленной системе macOS с
CMakePresets.json
помощью . Можно также запустить целевые объекты CMake на удаленной системе macOS, а затем выполнить удаленную отладку в отладчике Visual Studio с подключением GDB или LLDB. - Теперь можно выполнить отладку дампов ядра на удаленной системе macOS из Visual Studio с помощью LLDB или GDB.
- Версии
Clang
иLLVM
поставки в Visual Studio обновляются до версии 13. - Интеграция Visual Studio с CMake активна, только когда
CMakeLists.txt
определяется в корне открытой рабочей области. Если объектCMakeLists.txt
определен на другом уровне рабочей области, вам будет предложено активировать интеграцию CMake Visual Studio с уведомлением. - Новые представления, позволяющие проверять и взаимодействовать с периферийными регистрами в микроконтроллерах и объектах операционных систем реального времени (ОСРВ), доступных с помощью отладки>регистров Windows Embedded>
- Добавлено новое представление цепочек для проектов ОСРВ, доступное в меню Отладка>Окна>Объекты ОСРВ. Дополнительные сведения см. в статье Embedded Software Development in Visual Studio.
Новые возможности C++ в Visual Studio версии 17.0
Выпущено за ноябрь 2021 г.
Дополнительные сведения | Смотрите |
---|---|
Новые возможности интегрированной среды разработки Visual Studio 17.0 | Заметки о выпуске Visual Studio 2022 версии 17.0 |
Стандартные функции библиотеки (STL), объединенные функции C++23 и C++26, отчеты о дефектах C++20, разрешения проблем LWG, улучшения производительности, улучшенное поведение и исправленные ошибки | Журнал изменений STL 17.0 |
Улучшения соответствия языка C++ в Visual Studio 2022 17.0 | Улучшения соответствия C++, изменения поведения и исправления ошибок в Visual Studio 2022 17.10 |
Обзор некоторых новых функций в Visual Studio 2022 версии 17.0:
- Visual Studio IDE,
devenv.exe
, теперь является собственным 64-разрядным приложением. - Набор инструментов MSVC теперь по умолчанию используется для хэширования источника SHA-256 в отладочных записях. Ранее набор инструментов использовал MD5 для хэширования источника по умолчанию.
- Средства сборки версии 143 теперь доступны благодаря установщику Visual Studio, а также в автономных средствах сборки.
Горячая перезагрузка для машинного кода C++
- Горячая перезагрузка для C++ позволяет вносить в выполняемое приложение изменения кода разных типов и применять их без необходимости приостанавливать его с помощью точки останова или аналогичного средства.
В Visual Studio 2022 при запуске приложения в отладчике можно использовать кнопку горячей перезагрузки для внесения изменений во время выполнения приложения. Этот интерфейс работает на основе собственного режима "Изменить и продолжить". Дополнительные сведения о поддерживаемых изменениях см. по ссылке Изменить и продолжить (C++).
- Горячая перезагрузка теперь поддерживает проекты CMake и OpenFolder.
Поддержка WSL2
- Теперь вы можете выполнять сборку и отладку собственного кода в WSL2 без установления SSH-подключения. Поддерживаются кросс-платформенные проекты CMake и проекты Linux на основе MSBuild.
Улучшенная поддержка CMake
Обновлена версия CMake, поставляемая с Visual Studio до версии 3.21. Дополнительные сведения о доступных функциях этой версии см. в заметках о выпуске CMake 3.21.
Страницы обзора CMake обновляются для поддержки
CMakePresets.json
.Теперь вы можете настраивать проекты CMake и выполнять их сборку с помощью CMake 3.21 и
CMakePresets.json
версии 3.Visual Studio теперь поддерживает параметр
buildPresets.targets
вCMakePresets.json
. Он позволяет создать набор целевых объектов в проекте CMake.Меню "Проект" в проектах CMake упрощается и предоставляет параметры "Удалить кэш и перенастройку" и "Просмотреть кэш".
Реализован параметр компилятора
/scanDependencies
для перечисления зависимостей модуля C++20 для проектов CMake, как описано в P1689R5. Это шаг к поддержке создания проектов на основе модулей с помощью CMake, и мы работаем над реализацией этой поддержки в последующих выпусках.
Улучшения стандартной библиотеки
Здесь выделены улучшения стандартной библиотеки (STL). Полный список новых функций, изменений, исправлений ошибок и улучшений производительности см. в журнале изменений команды STL.
- Добавлены визуализаторы отладки для улучшения отображения следующих типов:
source_location
,bind_front()
,u8string
(и его итераторы),default_sentinel_t
,unreachable_sentinel_t
,ranges::empty_view
,ranges::single_view
,ranges::iota_view
(и его итератор или граничная метка),ranges::ref_view
,thread
,thread::id
,jthread
иfilesystem::path
. - Добавлен
[[nodiscard]]
в семейство функцийstoi()
в<string>
и в различные функции в<locale>
, такие как функции-членыcollate
,has_facet()
и семействаisalnum()
иtolower()
. - P0980R1 Создан
std::string
constexpr
в VS 2019 версии 16.10. Теперь поддерживается для Clang. - P1004R2 Создан
std::vector
constexpr
в VS 2019 версии 16.10. Теперь поддерживается для Clang.
Выделенные функции C++23
- P1048R1 Добавлен
is_scoped_enum
, новый признак для стандартной библиотеки C++, который определяет, является ли тип ограниченным перечислением. - P1132R7
out_ptr()
,inout_ptr()
. - P1679R3
contains()
дляbasic_string
иbasic_string_view
. - P1682R3
to_underlying()
для перечислений. - P2162R2 Разрешено наследование от
std::variant
. - P2166R1 Запретить создание
basic_string
иbasic_string_view
изnullptr
. Это критическое изменение исходного кода. Код с ранее неопределенным поведением в среде выполнения теперь отклоняется с ошибками компилятора. - P2186R2 Удалена поддержка сборки мусора. Это изменение удаляет
declare_reachable
,undeclare_reachable
,declare_no_pointers
,undeclare_no_pointers
,get_pointer_safety
. Ранее эти функции не действовали.
Выделенные улучшения производительности
<format>
теперь определяет, когда идет запись вback_insert_iterator
дляbasic_string
илиvector
, и быстрее вызываетinsert()
вend()
контейнера.- Улучшена производительность
std::find()
иstd::count()
дляvector<bool>
в 19 и 26 раз (не на соответствующее число процентов). - Улучшена производительность
std::count()
дляvector<bool>
. - Производительность
std::byte
теперь такая же, как уunsigned char
вreverse()
иvariant::swap()
.
Поддержка Clang и LLVM
Средства LLVM, предоставляемые Visual Studio, обновляются до LLVM 12. Дополнительные сведения см. в заметках о выпуске LLVM.
Поддержка Clang-cl была обновлена до LLVM 12.
Теперь вы можете выполнять отладку процессов, работающих на удаленных системах из Visual Studio, с помощью LLDB.
C++ AMP не рекомендуется
- Заголовки C++ AMP теперь являются нерекомендуемыми. Включение
<amp.h>
в проект C++ приводит к возникновению ошибок сборки. Чтобы заглушить эти ошибки, определите_SILENCE_AMP_DEPRECATION_WARNINGS
. Дополнительные сведения см. по ссылкам об объявлении AMP нерекомендуемым.
Улучшения IntelliSense
- Внесены улучшения в IntelliSense для C++, касающиеся навигации и выделения синтаксиса в типах из импортированных модулей и блоков заголовков. IntelliSense — это активная область вложений для нас. Помогите нам стать лучше: поделитесь своим отзывом в сообществе разработчиков, перейдя в меню Справка>Отправить отзыв.
- Улучшена производительность IntelliSense для C++ за счет оптимизации использования кэшированных заголовков и доступа к базе данных символов, что позволило уменьшить время загрузки для перехода к коду.
- Анализатор кода IntelliSense для C++ теперь включен по умолчанию. Он выдает мгновенные предложения во время ввода, а также предложения по исправлению для распространенных ошибок в коде.
- C++ IntelliSense для проектов CMake теперь работает при использовании заготовки с отображаемым именем.
Обновления рабочей нагрузки C++
- В рабочей нагрузке Разработка мобильных приложений на языке C++ произведено обновление до пакета NDK r21 LTS.
- Разработка игр с помощью рабочей нагрузки C++ теперь устанавливает последнюю версию Unreal Engine с поддержкой Visual Studio 2022.
Улучшения анализа кода
- Анализ кода теперь обеспечивает принудительную проверку возвращаемых значений функций с аннотациями
_Check_return_
или_Must_inspect_result_
. - Обнаружение разыменовки указателя NULL улучшено в нашем средстве анализа кода.
- Добавлена поддержка
gsl::not_null
для анализа кода. - Поддержка libFuzzer с параметром компилятора
/fsanitize=fuzzer
.
Заметки о выпусках более ранних версий
Заметки о выпуске для более старых версий C++ также доступны:
- Сведения о новых возможностях C++ в Visual Studio 2019 см. в статье Новые возможности C++ в Visual Studio 2019.
- Сведения о новых возможностях C++ в Visual Studio 2017 см. в статье Новые возможности C++ в Visual Studio 2017.
- Сведения о новых возможностях более ранних версий см. в статье Visual C++ What's new 2003–2015.
Известные проблемы
C++ IntelliSense
Дополнительные сведения о других открытых проблемах и доступных решениях для C++ в Visual Studio 2022 см. в списке проблем для сообщества разработчиков C++.
Отзывы и предложения
Мы хотели бы услышать ваше мнение! Вы можете сообщить о проблеме или предложить функцию с помощью значка "Отправить отзыв" в правом верхнем углу установщика или Visual Studio IDE или в меню Справка>Отправить отзыв. Вы можете отслеживать проблемы в сообществе разработчиков Visual Studio, позволяющем добавлять комментарии или искать решения. Кроме того, вам доступна бесплатная поддержка в чате по вопросам с установкой.
Блоги
Воспользуйтесь преимуществами аналитических сведений и рекомендаций, доступных на сайте блогов разработчиков Майкрософт, чтобы оставаться в курсе всех новых выпусков . В блогах можно найти записи, подробно изучающие разнообразные функции. Блог команды C++ и блог Visual Studio имеют особый интерес.