Заметки о выпуске Visual Studio 2019 версии 16.8
Сообщество разработчиков System Requirementsy | Compatibilitable | Code | Release History | Terms Blogs | New in Visual Studio Docs | (Новые возможности в документации Visual Studio) |
Примечание.
Этот выпуск — не последняя версия Visual Studio. Чтобы скачать последний выпуск, посетите сайт Visual Studio .
Новые возможности Visual Studio 2019 версии 16.8
Поддержка диапазона времени
Эта версия теперь не поддерживается. Дополнительные сведения о поддержке Visual Studio см. в политике поддержки Visual Studio 2019.
Ознакомьтесь с последней версией заметок о выпуске или посетите сайт Visual Studio , чтобы скачать последнюю поддерживаемую версию Visual Studio 2019.
Выпуски Visual Studio 2019 версии 16.8
- 09 марта 2021 г. — Visual Studio 2019 версии 16.8.7
- 22 февраля 2021 г. — Visual Studio 2019 версии 16.8.6
- 9 февраля 2021 г. — Visual Studio 2019 версии 16.8.5
- 12 января 2021 г. — Visual Studio 2019 версии 16.8.4
- 8 декабря 2019 г. — Visual Studio 2020 версии 16.8.3
- 19 ноября 2020 г. — Visual Studio 2019 версии 16.8.2
- 12 ноября 2020 г. — Visual Studio 2019 версии 16.8.1
- 10 ноября 2020 г. — Visual Studio 2019 версии 16.8.0
Помещенные в архив заметки о выпуске Visual Studio 2019
- Заметки о выпуске Visual Studio 2019, версия 16.7
- Заметки о выпуске Visual Studio 2019, версия 16.6
- Заметки о выпуске Visual Studio 2019 версии 16.5
- Заметки о выпуске Visual Studio 2019 версии 16.4
- Заметки о выпуске Visual Studio 2019 версии 16.3
- Заметки о выпуске Visual Studio 2019 версии 16.2
- Заметки о выпуске Visual Studio 2019 версии 16.1
- Заметки о выпуске Visual Studio 2019 версии 16.0
Блог Visual Studio 2019
Блог Visual Studio 2019 является официальным источником сведений о продукте от группы разработчиков Visual Studio. Более подробные сведения о выпусках Visual Studio 2019 версии 15.9 можно найти в следующих записях:
- Visual Studio 2019 версии 16.9, предварительная версия 3, доступна уже сегодня!
- Выпуск Visual Studio 2019 версии 16.9 (предварительная версия 2) доступен вместе с новогодними пожеланиями!
- Выпуск Visual Studio 2019 версии 16.8 и 16.9 (предварительная версия) доступен уже сегодня!
- Новые возможности Visual Studio 2019 версии 16.8, предварительная версия 3.1
- Сегодня выходит Visual Studio 2019 версии 16.8, предварительная версия 2 с новыми возможностями!
- Сегодня выходит Visual Studio 2019 версий 16.7 и 16.8, предварительная версия 1!
- Visual Studio 2019 версии 16.7, предварительная версия 2, доступна уже сегодня!
- Новые интересные обновления для пользовательского интерфейса Git в Visual Studio
- Выпуск сегодня! Visual Studio 2019, версия 16.6 и 16.7, предварительная версия 1
- Visual Studio 2019 версии 16.6, предварительная версия 2 — новые возможности
- Visual Studio 2019 версии 16.5 теперь доступна!
- Время выпуска Visual Studio 2019 версии 16.4
- Visual Studio 2019 версии 16.4, предварительная версия 2, Fall Sports и Pumpkin Spice
- Поддержка .NET Core и другие возможности в Visual Studio 2019 версии 16.3 — выполните обновление сейчас!
- Выпущены Visual Studio 2019 версии 16.3, предварительная версия 2, и Visual Studio 2019 для Mac версии 8.3, предварительная версия 2!
- Visual Studio 2019 версии 16.2 и 16.3, предварительная версия 1, теперь доступна
- Visual Studio 2019 версии 16.2, предварительная версия 2
- Visual Studio 2019 версии 16.1 и 16.2, предварительная версия
- Visual Studio 2019. Пишите код быстрее. Автоматизируйте работу. Создавайте будущее.
См. полный список всех предложений по внесению изменений в Visual Studio 2019 версии 16.8 на сайте сообщества разработчиков
Visual Studio 2019 версии 16.8.7
Выпущено 9 марта 2021 г.
Проблемы, устраненные в этом выпуске Visual Studio 2019 версии 16.8.7
Советы по безопасности
CVE-2021-21300 — уязвимость к удаленному выполнению кода в Git для Visual Studio
Существует уязвимость удаленного выполнения кода, когда Visual Studio клонирует вредоносный репозиторий.
CVE-2021-26701 — уязвимость к удаленному выполнению кода в .NET Core
В .NET 5 и .NET Core есть уязвимость удаленного выполнения кода. Она обусловлена методами обработки кодировки текста.
Visual Studio 2019 версии 16.8.6
Выпущено 22 февраля 2021 г.
Проблемы, устраненные в этом выпуске Visual Studio 2019 версии 16.8.6
- Исправлена ошибка высокого приоритета, не позволяющая разработчикам отправлять код в Функции Azure или другие ресурсы Azure из Visual Studio 2019.
- VS 16.8.5. Создание репозитория Git — создание репозитория GitHub — "Частный" (не установлен параметр "Частный") — сбой
Visual Studio 2019 версии 16.8.5
Выпущено 09 февраля 2021 г.
Советы по безопасности
CVE-2021-1639 — уязвимость к удаленному выполнению кода в языковой службе TypeScript
При загрузке Visual Studio вредоносного репозитория, содержащего файлы кода JavaScript или TypeScript, существует уязвимость удаленного выполнения кода.
CVE-2021-1721 — уязвимость .NET Core к отказу в обслуживании
При создании веб-запроса HTTPS во время создания цепочки сертификатов X509 существует уязвимость, приводящая к отказу в обслуживании.
CVE-2021-24112 — уязвимость к удаленному выполнению кода в .NET 5 и .NET Core
При удалении метафайлов, когда графический интерфейс по-прежнему ссылается на них, существует уязвимость удаленного выполнения кода. Эта уязвимость существует только в системах, работающих под управлением MacOS или Linux.
Проблемы, устраненные в этом выпуске Visual Studio 2019 версии 16.8.5
- Исправлена проблема, при которой файл APPX x86 Microsoft.VCLibs, установленный в пакетах расширений SDK, обновлялся с неправильной подписью.
- Исправлена утечка памяти при использовании функций DesignTime C++.
- Исправлена проблема, из-за которой возникает исключение, если при импорте существующей базы данных в проект SSDT не был сохранен пароль.
- Исправлена проблема, из-за которой кнопка "Опубликовать" была отключена при публикации клиентами, работающими с продуктом впервые, проектов .NET Core в папке или других целевых объектах размещения.
- Исправлено зависание, которое иногда возникало при открытии страницы просмотра профилей публикации.
- Добавлена поддержка Xcode 12.4.
Исправления от сообщества разработчиков
- Исправлена проблема, из-за которой файл SQLPROJ не обновлялся с учетом изменений.
- Visual Studio 2019 аварийно завершает работу с ошибками нехватки памяти в решениях Chromium.
- Ошибка в компиляторе оптимизации Visual Studio 2019 версии 16.7.6
- Visual Studio аварийно завершает работу при выборе пункта "Новый элемент" > "Таблица" в проекте базы данных.
- VSDIIUnregisterServer замедляет работу Visual Studio 2019.
- Непредвиденный сбой Visual Studio 2019 при закреплении или разделении окон.
Visual Studio 2019 версии 16.8.4
Выпущено 12 января 2021 г.
Советы по безопасности
CVE-2021-1651 / CVE-2021-1680 — уязвимость к повышению прав в стандартной службе сборщика Центра диагностики
Уязвимость, которая может привести к несанкционированному повышению привилегий, возникает, когда стандартный сборщик центра диагностики неправильно обрабатывает определенные операции с данными.
CVE-2020-26870 — уязвимость к удаленному выполнению кода в Visual Studio Installer
Уязвимость удаленного выполнения кода возникает, когда Visual Studio Installer пытается отобразить вредоносные данные Markdown.
CVE-2021-1723 — уязвимость ASP.NET Core и Visual Studio, приводящая к отказу в обслуживании
В способе обработки запросов HTTP/2 в Kestrel существует уязвимость, приводящая к отказу в обслуживании.
Проблемы, устраненные в этом выпуске Visual Studio 2019 версии 16.8.4
- Устранена проблема, из-за которой компоненты IntelliCode для C# могли не устанавливаться при установке IntelliCode из Visual Studio Marketplace в более ранних версиях Visual Studio.
- Транзитивные ссылки на проекты теперь учитываются, когда проекты PackageReference ссылаются на проекты packages.config с зависимостями PackageReference.
- Добавлена поддержка Xcode 12.3.
- Исправлена поддержка симулятора x86_64 watchOS 7.0+
- Мы исправили ложноположительные результаты (C33001 ~ C33005) для использования вариантов, возвращаемых функцией.
- Исправление периодического сбоя VS в конструкторе .NET Core WinForms при закрытии проекта или решения.
- Исправлен проект базы данных: перетаскивание файла из обозревателя решений в открытый файл удаляется из файловой системы!
- При нажатии кнопки "Обновить" в окне "Сравнение схем SQL" не сохраняются изменения в файле SQLPROJ.
- Исправлена ошибка, из-за которой сборки завершались с ошибками "Не найдена таблица или столбец".
- Исправлен флажок "Фиксировать после слияния" в разделе Team Explorer -> Ветви.
- Исправлена ошибка, из-за которой Visual Studio могла переставать отвечать в течение нескольких секунд при проверке наличия обновлений.
- Средство DeploymentAppRecipe.exe теперь поддерживает запуск из любого текущего каталога. Оно также возвращает ненулевое значение при сбое развертывания и выводит сообщения об ошибках в стандартный поток ошибок.
От сообщества разработчиков
- После обновления 16.8 возникает большое количество ошибок анализа кода, хотя для некоторых правил задано предупреждение
- Приложение .NET Core 3.1 или .NET 5.0, установленное с помощью технологии ClickOnce, может не запускаться после установки.
- Ложноположительный результат C33005 c _variant_t
- Ошибка операции слияния и фиксации Git
- Не удается просмотреть сведения о задачах или параллельных стеках с помощью моникера целевой платформы net5.0-windows*
- При нажатии кнопки "Обновить" в окне "Сравнение схем SQL" не сохраняются изменения в файле sqlproj
- Проект базы данных: перетаскивание файла из обозревателя решений в открытый файл удаляет файл из файловой системы!
- Обучение модели IntelliCode в Visual Studio 2019 завершается сбоем
- Не удается открыть сеансы совместной работы LiveShare
Visual Studio 2019 версии 16.8.3
Дата выпуска: 8 декабря 2020 г.
Советы по безопасности
CVE-2020-17156 — уязвимость к удаленному выполнению кода в Visual Studio
Существует уязвимость удаленного выполнения кода, когда Visual Studio клонирует вредоносный репозиторий.
Проблемы, устраненные в этом выпуске Visual Studio 2019 версии 16.8.3
- Исправлена внутренняя ошибка компилятора, если вложенный шаблон функции определен за пределами родительского класса.
- Исправлена ошибка C2355, когда this используется в инициализаторе нестатического элемента данных.
- Ошибка загрузки набора правил исправлена для пользовательского набора правил с помощью параметра /analyze:ruleset с /analyze:rulesetdirectory и (или) параметра /analyze:projectdirectory.
- Исправлен периодический сбой в Visual Studio при использовании конструктора .NET Core WinForms.
- Вставка .NET 5.0.1 в Visual Studio версии 16.8.3
- Исправлена проблема, из-за которой некоторые окна инструментов активации в контексте пользовательского интерфейса могут привести к сбою Visual Studio.
- Исправлена возможность отправки со страницы "Управление ветвями", если отсутствует ветвь удаленного отслеживания Git.
- Включена поддержка Xcode 12.2.
От сообщества разработчиков
- Имя события должно содержать по крайней мере три части, разделенные косой чертой
- Настройка панели инструментов не сохраняется
Visual Studio 2019 версии 16.8.2
Дата выпуска: 19 ноября 2020 г.
Проблемы, устраненные в этом выпуске Visual Studio 2019 версии 16.8.2
- Исправлена ошибка оптимизации в циклах.
- Исправлена внутренняя ошибка компилятора в реализации гарантированного пропуска копирования (функция C++ 17).
- Исправлено ухудшение производительности при сборке с активным использованием анонимных типов.
- Устранена проблема, при которой при редактировании кода C# появлялось сообщение "Specified argument was out of the range of valid values" (Указанный аргумент выходит за рамки допустимых значений).
- Исправлена проблема, которая могла привести к возникновению исключения MissingMethodException при сборке проекта с шаблонами T4.
- Исправлена проблема, при которой поиск в диалоговом окне новых проектов мог не возвращать результаты.
От сообщества разработчиков
- Исключение KeyNotFoundException в результатах SolutionAssetStorage.GetAssetAsync.
- IntelliSense завершает работу со сбоем, так как сборка DesignTime не обнаружила целевой объект GetClCommandLineForReference.
- GetAssetAsync сообщает об исключении IOException (сбой конвейера).
- Поиск не работает.
- Оптимизатор неправильно удалял сведения о EH, что вызывало сбой некоторых исключений.
Visual Studio 2019 версии 16.8.1
Дата выпуска: 12 ноября 2020 г.
Проблемы, устраненные в этом выпуске Visual Studio 2019 версии 16.8.1
- Исправлена проблема с высокой степенью влияния, когда пакет SourceExplorerPackage загружался неправильно. При клонировании репозитория в Team Explorer появлялось предупреждение. При возникновении этой проблемы продукт переставал отвечать на запросы.
Visual Studio 2019 версии 16.8.0
Дата выпуска: 10 ноября 2020 г.
Сводка новых возможностей этого выпуска Visual Studio 2019 версии 16.8
F#:
- F# 5 теперь выпускается вместе с .NET 5.
- Улучшения производительности и исправления для инструментария Visual Studio с использованием F# Tools версии 11.0.0.
- Полные заметки о выпуске доступны на GitHub.
- Теперь поддерживаются сопрограммы C++20 при использовании /std:c++latest и заголовка <coroutine>.
- IntelliSense теперь обеспечивает поддержку заголовков <concepts> и <ranges> C++20, а также позволяет переименовывать и просматривать определения концепций.
- Наша версия библиотеки STL теперь поддерживает большинство диапазонов C++20.
- Компилятором MSVC теперь поддерживаются условно тривиальные специальные функции-члены.
- C11 и C17теперь поддерживаются с помощью переключателей /std:c11 и /std:c17.
- К дополнительным улучшениям STL относятся полная поддержка std::atomic_ref, std::midpoint и std::lerp и std::execution::unseq, оптимизации std::reverse_copy и другие.
- Обновленная версия CMake поставляется с Visual Studio для CMake 3.18.
- Наши средства анализа кода теперь поддерживают SARIF 2.1 — отраслевой стандартный формат журнала статического анализа.
- Отсутствующие средства сборки в проектах Linux теперь будут вызывать предупреждение на панели инструментов и четкое описание отсутствующих средств в списке ошибок.
- Теперь можно выполнять отладку дампов ядра Linux в удаленной системе Linux или WSL непосредственно из Visual Studio.
- Для создания комментариев в C++ Doxygen мы добавили дополнительные варианты стиля комментариев (/*! и //!).
- Дополнительные объявления о vcpkg
- Включена поддержка компилятора для лямбда-выражений в невычисляемых контекстах.
- Повышена производительность ссылки /debug:full путем создания PDB-файлов в многопоточном режиме. Для некоторых крупных приложений и AAA-игр компоновка выполняется в 2–4 раза быстрее.
- Отладчик Visual Studio теперь поддерживает char8_t.
- Включена поддержка проектов ARM64 с использованием clang-cl.
- Включена поддержка встроенных объектов Intel AMX.
- Добавлен новый параметр ссылки для
legacy_stdio_float_rounding.obj
включения устаревшего поведения печати значений с плавающей запятой, который был изменен в Dev16.2 для правильного округления точно представленных чисел с плавающей запятой. Дополнительные сведения см. в разделе printf, _printf_l, wprintf, _wprintf_l.
- Поддержка отладки дампа ядра Linux в .NET Core
- Автоматический анализ .NET и .NET Core
- Автоматический анализ критического пути для памяти .NET и .NET Core
Обновления экспериментального редактора Razor:
- Лампочки Blazor.
- Лампочки C#:
- Расширенное форматирование Razor.
- Переименование компонентов Razor в разметке из файлов .razor.
- Переход к определению в пространстве имен тегов компонентов Blazor.
- Цветовое выделение C#.
- Цветовое выделение подсказки завершения C#.
- Переход к определению или реализации Razor, включая закрытые файлы.
- Поиск всех ссылок в закрытых файлах Razor.
- Повышение эффективности и стабильности редактирования Razor для крупных проектов и решений.
Использование Fakes с проектами в стиле пакета SDK:
- При использовании Fakes с проектами в стиле пакета SDK некоторые пользователи столкнулись со следующей ошибкой во время создания оболочек.
- Узнайте, как использовать все функции Git, из нашей новой интерактивной документации.
- Открытие окна репозитория Git в любое время в окне "Изменения Git", меню "Вид" и строке "Состояние".
- Получение, извлечение и отправка из нескольких удаленных репозиториев в окне "Изменения Git".
- Просмотр сообщений об успешном выполнении и ошибках для команд Git в верхней части окна "Репозиторий Git".
- Создание ветви из рабочего элемента Azure DevOps
- Откройте репозиторий Git из списка локальных репозиториев в меню Git
- Теперь поставщиком системы управления версиями по умолчанию является Git, а не TFVC.
- Возможность одним щелчком переключаться между журналами ветви в окне репозитория Git.
- Просмотр и выбор из списка решений в Обозревателе решений после открытия репозитория.
- Изменение представления журнала и поиск фиксаций с помощью панели инструментов в окне репозитория Git.
- Принесение, вытягивание и отправка из разделов входящих и исходящих фиксаций в графе журнала ветви.
- Получение запроса на создание запроса на вытягивание после отправки ветви в удаленный репозиторий.
- Просмотр имен ветвей в командах слияния и перемещения изменений из одной ветви в другую в контекстном меню списка ветвей.
- Доступ к командам Git через контекстное меню в обозревателе решений и редакторе.
- Отслеживание выполнения клонирования с помощью нового модального диалогового окна с возможностью перемещения процесса в фоновый режим.
IntelliCode:
- Получение персонализированных завершений IntelliCode в документации по Visual Studio.
- Обновление IntelliCode в соответствии с базой кода и предоставление в рамках документации по рабочему процессу CI команды.
- Анализаторы Roslyn теперь включены в пакет SDK для .NET 5.0.
- Рефакторинг с новым синтаксисом сопоставления шаблонов
not
C# 9 при наличии оператора подавления. - Рефакторинг встроенного метода для замены статических методов, методов экземпляров и расширений в пределах тела одного оператора.
- Исправление кода для преобразования экземпляров
typeof
вnameof
в C# иGetType
вNameOf
в Visual Basic. - В C# и Visual Basic включена поддержка подсказок для имен встроенных параметров, которые вставляют элементы оформления для литералов, приведенных литералов и создаваемых экземпляров объектов перед каждым аргументом в вызовах функций.
- Рефакторинг, который извлекает элементы из выбранного класса в новый базовый класс в C# и Visual Basic.
- Для очистки кода доступны новые параметры конфигурации, которые могут применять настройки форматирования и заголовков файлов, заданные в файле EditorConfig, к отдельному файлу или всему решению.
- Исправление кода, позволяющее удалить ключевое слово
in
, где аргумент не должен передаваться по ссылке. - Рефакторинг, который представляет новые варианты блоков объединения и сопоставления шаблонов C# 9, включая преобразование
==
для использованияis
, где это применимо. - Исправление кода, позволяющее сделать класс абстрактным при попытке написать абстрактный метод в неабстрактном классе.
- Завершение IntelliSense в строковых литералах DateTime и TimeSpan автоматически появляется при вводе первого символа кавычек.
- Исправление кода, позволяющее удалить ненужные
pragma suppressions
иSuppressMessageAttributes
. Rename
иFind All References
теперь распознают ссылки на символы в целевой строке глобального объектаSuppressMessageAttributes
.- ByVal становится полупрозрачным, информируя о том, что это необязательный вариант. Также реализовано исправление, позволяющее удалить ненужный параметр ByVal в Visual Basic.
- Включена поддержка Интерактивного окна для нескольких сред выполнения, включая .NET Framework и .NET Core.
- Добавлен новый API RegisterAdditionalFileAction, позволяющий авторам анализаторов создать анализатор для дополнительных файлов.
Интегрированная среда разработки Visual Studio 2019:
- Добавление учетной записи GitHub с помощью интерфейса управления учетными записями.
- В этом выпуске устаревший интерфейс поиска в файлах признан нерекомендуемым, а все пользователи перемещаются на новый интерфейс. Группа разработчиков редактора сотрудничает с пользователями, оставляющими отзывы в Сообществе разработчиков, которые сталкиваются с проблемами в современном интерфейсе поиска в файлах.
- Поставщик публикации ClickOnce теперь доступен для классических приложений Windows для .NET Core 3.1 и .NET 5.0.
Перенос текста в области "Подробности теста" Обозревателя тестов:
- теперь вы можете настроить перенос текста в области "Подробности теста" в Обозревателе тестов.
Средства XAML (WPF, UWP и Xamarin.Forms):
- Улучшения диагностики ошибок привязки XAML
- Параметры горячей перезагрузки XAML перемещены в раздел "Отладка" > "Горячая перезагрузка".
- Заполнение панели элементов из пакетов NuGet без ссылок.
JavaScript/TypeScript:
- Отладчик JavaScript/TypeScript теперь поддерживает отладку служебных сценариев, веб-сценариев, iFrame и страниц JavaScript. Кроме того, новый процесс отладки поддерживает одновременную отладку в браузере серверных приложений внутреннего узла и клиентских решений JavaScript. Эта функция все еще является экспериментальной. Вы можете включить ее в меню "Параметры отладки".
- Теперь можно активировать возможности рефакторинга в любом месте, где они могут быть доступны, с помощью клавиш действия кода (CTRL+.). Вам даже не нужно выбирать текст — TypeScript теперь самостоятельно определяет расположение курсора, предлагая наилучшие возможности рефакторинга.
- Теперь можно точно настроить пакеты, которые TypeScript будет искать для автоматического завершения импорта. Это может привести к повышению производительности в некоторых проектах с множеством зависимостей. Дополнительные сведения см. в заметках о выпуске TypeScript 4.0[https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-0.html].
- Мы добавили в область вывода сообщение, информирующее о том, какие типы мы устанавливаем для поддержки IntelliSense. Мы рекомендуем добавить в проект элемент tsconfig, чтобы настроить используемые типы.
- Обратите внимание, что мы добавили компилятор TypeScript 4.0 и языковую службу.
Советы по безопасности
CVE-2020-17100 — уязвимость к незаконному изменению данных в Visual Studio
Уязвимость, связанная с незаконным изменением, возникает, когда подключаемый модуль "Инструменты Python для Visual Studio" создает папку python27. Злоумышленник, использующий эту уязвимость, может запускать процессы с повышенными привилегиями.
Проблемы, устраненные в этом выпуске
- Исправлена проблема, из-за которой при компиляции в Visual Studio 2019 16.7 с использованием 80-битного числа типа long double выдаются ошибки компилятора Intel C++, препятствующие сборке проектов.
- Исправлена проблема, из-за которой компонент Live Unit Testing не запускался в некоторых сценариях.
- Добавлена версия .NET 5.0.RC2 в выпуск Visual Studio 2019 версии 16.8, предварительная версия 4.
- Исправлена ошибка, из-за которой случайная операция Git может начаться и никогда не завершиться.
- Добавлена дополнительная функциональность в операции создания и подключения Visual Studio Codespaces.
- Исправлена ошибка, вызывавшая сбой или зависание Visual Studio 2019 при закрытии или выходе из решений ASP.NET Core.
- Устранена проблема, из которой не удавалось загрузить систему проектов C++ после удаления и переустановки Visual Studio 2019.
Сведения о новых возможностях Visual Studio 2019 версии 16.8.0
C++
- Теперь поддерживаются сопрограммы C++20 при использовании /std:c++latest и заголовка <coroutine>. Поддержка устаревшего поведения Visual Studio доступна при указании <experimental/coroutine> и параметра /await.
- IntelliSense теперь обеспечивает поддержку заголовков <concepts> и <ranges> C++20, а также позволяет переименовывать и просматривать определения концепций. Существует известная проблема, которую мы планируем устранить в предварительной версии 4.
- Наша версия библиотеки STL теперь поддерживает большинство диапазонов C++20. Ход выполнения можно отслеживать по проблемам с диапазонами на GitHub.
- Компилятором MSVC теперь поддерживаются условно тривиальные специальные функции-члены.
- C11 и C17теперь поддерживаются с помощью переключателей /std:c11 и /std:c17.
- К дополнительным улучшениям STL относятся полная поддержка std::atomic_ref, std::midpoint и std::lerp и std::execution::unseq, оптимизации std::reverse_copy и другие. Полный список обновлений можно найти в журнале изменений.
- Мы обновили версию CMake, поставляемую с Visual Studio, до CMake 3.18.
- Наши средства анализа кода теперь поддерживают SARIF 2.1 — отраслевой стандартный формат журнала статического анализа. Дополнительные сведения о формате SARIF см. в официальной спецификации.
- Отсутствующие средства сборки в проектах Linux теперь будут вызывать предупреждение на панели инструментов и четкое описание отсутствующих средств в списке ошибок.
- Теперь можно выполнять отладку дампов ядра Linux в удаленной системе Linux или WSL непосредственно из Visual Studio.
- Для создания комментариев в C++ Doxygen мы добавили дополнительные варианты стиля комментариев (/*! и //!).
- Дополнительные объявления о vcpkg
- Добавлена поддержка компилятора для лямбда-выражений в невычисляемых контекстах, что позволяет использовать лямбда-выражения в описателях decltype.
- Теперь в Visual Studio доступны анализатор кода и исправления «по мере ввода». Настройка производится в разделе меню "Сервис" > "Параметры" > "Текстовый редактор" > "C/C++" > "CodeStyle > "Анализатор кода и исправления".
Отладчик
Поддержка отладки дампа ядра Linux в .NET Core
До сих пор отладка управляемых дампов ядра Linux в Windows была сложной задачей. Она, как правило, включала настройку другой среды Linux, которая точно отражала бы производственную среду, и установку набора средств для анализа. Благодаря улучшениям в Visual Studio 2019 16.8 предварительная версия 3 можно просто перетащить управляемый дамп ядра Linux непосредственно в интегрированную среду разработки и сразу же начать отладку.
Автоматический анализ .NET
Асинхронное программирование существует на платформе .NET уже несколько лет, но исторически сложилось так, что его было сложно реализовать. Мы реализовали анализатор дампа управляемой памяти, который помогает определять следующие сценарии и антишаблоны:
- Sync-over-Async
- Нехватка потоков ThreadPool
Автоматический анализ критического пути для памяти .NET и .NET Core
Это позволяет клиентам интуитивно понятным способом просматривать доминирующие типы объектов в куче памяти, используя специальные заметки в окне инструментов диагностики памяти.
Проблемы с созданием оболочек с использованием Fakes с проектами в стиле пакета SDK
При использовании новой функции поддержки Fakes для проектов в стиле SDK некоторые пользователи столкнулись со следующей ошибкой создания модификаторов.
Cannot generate shim for System.DateTime: type is not supported because of internal limitations
Исправление для этого доступно в предварительной версии 3 для выпуска 16.8. Для выпусков 16.7.* используйте следующее обходное решение:
- В PropertyGroup CSPROJ-файла добавлено <FakesUseV2Generation>False</FakesUseV2Generation>.
- Добавьте <Fakes Include="Fakes\*.fakes" /> в ItemGroup в CSPROJ-файле.
- Добавьте ссылку на созданные сборки Fakes в ProjectDir/FakesAssemblies.
Вы также можете следить за отзывами в сообществе разработчиков для получения новых сведений.
Обновления экспериментального редактора Razor
Новый экспериментальный редактор Razor теперь поддерживает следующие функции редактирования Razor:
- Лампочки Blazor:
- Извлечение в код программной части*:
- Создание компонента из тега*
- Добавление директивы
@using
для компонента - Полное имя тега компонента
- Лампочки C#
- Добавление директивы
@using
- Полное имя типа
- Добавление директивы
- Расширенное форматирование Razor.
- Переименование компонентов Razor в разметке из файлов .razor.
- Переход к определению в именах тегов компонентов Blazor.
- Цветовое выделение C#.
- Цветовое выделение подсказки завершения C#.
- Поиск всех ссылок в закрытых файлах Razor.
- Повышение эффективности и стабильности редактирования Razor для крупных проектов и решений.
* Работает только в локальных сценариях Razor и еще не поддерживается в Visual Studio Codespaces и Live Share.
Чтобы включить экспериментальный редактор Razor, перейдите в раздел Сервис>Параметры>Среда>Предварительная версия функций, выберите Включить экспериментальный редактор Razor, а затем перезапустите Visual Studio.
Интегрированная среда разработки Visual Studio 2019
- Добавьте свою учетную запись GitHub с помощью привычного интерфейса управления учетными записями Visual Studio. После этого интегрированный терминал и другие функции смогут использовать ваши учетные данные для удовлетворения требований к аутентификации GitHub.
- Поставщик публикации ClickOnce теперь доступен для классических приложений Windows для .NET Core 3.1 и .NET 5.0. Чтобы начать работу, щелкните проект правой кнопкой мыши в Обозревателе решений и выберите "Опубликовать" или откройте меню "Сборка" > "Опубликовать <AppName>". ClickOnce можно найти в категории "Папка".
Производительность Git
- Создание ветви из рабочего элемента Azure DevOps
- Откройте репозиторий Git из списка локальных репозиториев в меню Git
Теперь поставщиком системы управления версиями по умолчанию является Git, а не TFVC. Эту настройку можно изменить в меню «Сервис» - «Параметры» - «Система управления версиями»
Возможность одним щелчком переключаться между журналами ветви в окне репозитория Git.
Просмотр и выбор из списка решений в репозитории в Обозреватель решений после открытия репозитория
Производительность .NET
- Анализаторы .NET Compiler Platform (Roslyn) выполняют анализ безопасности, производительности, структуры и других характеристик кода на C# или Visual Basic, а также выявляют другие проблемы в нем. Начиная с .NET 5.0 эти анализаторы входят в состав пакета SDK .NET. Для проектов, предназначенных для .NET 5.0 или более поздней версии, анализаторы кода включены по умолчанию. Можно включить анализ кода для проектов, предназначенных для более ранних версий .NET, задав для свойства EnableNETAnalyzers значение true. Можно отключить анализ кода для проекта, задав для параметра EnableNETAnalyzers значение false. Для включения и отключения анализаторов .NET можно также использовать окно свойства проекта. Чтобы открыть окно свойств проекта, щелкните правой кнопкой мыши проект в обозревателе решений и выберите пункт Свойства. Затем перейдите на вкладку Анализ кода, где можно установить или снять флажок параметра Включить анализаторы .NET.
- Теперь существует рефакторинг, в котором добавлен новый синтаксис сопоставления шаблонов C# 9
not
при наличии оператора подавления. Наведите курсор на оператор подавления. Нажмите CTRL+., чтобы открыть меню Быстрые действия и рефакторинг. Выберите Использовать сопоставление шаблонов.
- Теперь имеется рефакторинг встраивания метода, который помогает заменить использование статических методов, экземпляров и расширений в пределах тела одного оператора с возможностью удаления исходного объявления метода. Наведите курсор на место использования метода. Нажмите CTRL+., чтобы открыть меню Быстрые действия и рефакторинг. Затем выберите один из следующих вариантов.
Выберите Inline <QualifiedMethodName>
, чтобы удалить объявление встроенного метода:
Выберите inline и сохраните <QualifiedMethodName>
исходное объявление метода:
Создание нового файла C# или Visual Basic из шаблона учитывает параметры стиля кода EditorConfig. Следующие стили кода применяются автоматически при создании новых файлов: заголовки файлов, сортировка директив using и размещение директив using внутри или снаружи пространств имен.
Реализована поддержка C# и Visual Basic для подсказок для имен встроенных параметров, которые вставляют элементы оформления для литералов, приведенных литералов и создаваемых экземпляров объектов перед каждым аргументом в вызовах функций. Чтобы включить эту функцию, перейдите в раздел Сервис>Параметры>Текстовый редактор>C# или Basic>Дополнительно и выберите Отображать подсказки для имен встроенных параметров (экспериментальная функция). После этого подсказки для имен встроенных параметров появятся в файле C# или Visual Basic.
- Теперь можно извлекать элементы из выбранного класса в новый базовый класс с помощью нового метода рефакторинга Извлечь базовый класс. Поместите курсор на имя класса или на выделенный элемент. Нажмите CTRL+., чтобы открыть меню Быстрые действия и рефакторинг. Выберите Извлечь элементы в новый базовый класс. Откроется диалоговое окно Извлечение базового класса, где можно указать имя базового класса и расположение, куда его следует поместить. Вы можете выбрать элементы, которые необходимо переместить в новый базовый класс, и сделать их абстрактными, установив флажок в столбце "Сделать абстрактным".
После нажатия кнопки ОК будет добавлен новый базовый класс вместе с его элементами.
- Добавлено исправление кода для преобразования экземпляров typeof(
<QualifiedType>
).Name в nameof(<QualifiedType>
) в C# и экземпляров GetType(<QualifiedType>
).Name в NameOf(<QualifiedType>
) в Visual Basic. Использование nameof вместо имени типа позволяет избежать отражения, происходящего при извлечении объекта. Поместите курсор в экземпляр typeof(<QualifiedType>
).Name. Нажмите CTRL+., чтобы открыть меню Быстрые действия и рефакторинг. Затем сделайте следующее:
При использовании C# выберите Преобразовать typeof
в nameof
:
При использовании Visual Basic выберите Преобразовать GetType
в NameOf
:
- У функцииОчистка кода появились новые параметры конфигурации, которые могут применять параметры форматирования и заголовков файлов, заданные в файле EditorConfig, к отдельному файлу или ко всему решению.
- Теперь доступно исправление кода, позволяющее удалить ключевое слово
in
, где аргумент не должен передаваться по ссылке. Поместите курсор на ошибку. Нажмите CTRL+., чтобы открыть меню Быстрые действия и рефакторинг. Выберите Удалить ключевое слово "in".
- Теперь доступен рефакторинг, представляющий новые методы объединения шаблонов C#9. Помимо предложений сопоставления шаблонов, например преобразования
==
для использованияis
по мере возможности, это исправление кода также предлагает методы объединения шаблоновand
,or
иnot
при сопоставлении нескольких различных шаблонов и отрицании. Поместите курсор внутрь оператора. Нажмите CTRL+., чтобы открыть меню Быстрые действия и рефакторинг. Выберите Использовать сопоставление шаблонов.
- Теперь доступно исправление кода, позволяющее сделать класс абстрактным, когда вы пытаетесь написать абстрактный метод в неабстрактном классе. Поместите курсор на ошибку метода. Нажмите CTRL+., чтобы открыть меню Быстрые действия и рефакторинг. Выберите Make class "abstract" (Сделать класс абстрактным).
- В выпуске 16.7, предварительная версия 1 доступно завершение IntelliSense в строковых литералах DateTime и TimeSpan. В данном выпуске этот список завершения автоматически отображается при вводе первой кавычки. В прошлом для просмотра этого списка завершения требовалось нажать клавиши CTRL+ПРОБЕЛ. Поместите курсор внутрь строкового литерала DateTime или TimeSpan и введите первую двойную кавычку. Вы увидите параметры завершения и пояснения к каждому символу. Будут указаны формат даты и времени, а также пример.
- Теперь доступно исправление кода для удаления ненужных подавлений прагмы и ненужных
SuppressMessageAttributes
. Наведите курсор на предупреждение прагмы илиSuppressMessageAttribute
. Нажмите CTRL+., чтобы открыть меню Быстрые действия и рефакторинг. Выберите Remove unnecessary suppression (Удалить ненужные подавления).
- Функции Переименовать и Найти все ссылки теперь распознают ссылки на символы в целевой строке глобальных подавлений
SuppressMessageAttribute
.
- Visual Basic предлагал несколько способов передачи параметров — ByVal и ByRef, и в течение длительного времени ByVal быть необязательным. Теперь мы делаем ByVal полупрозрачным, чтобы указать, что это необязательный вариант, а также выпускаем исправление кода, чтобы удалить ненужные ByVal. Поместите курсор на ключевое слово ByVal. Нажмите CTRL+., чтобы открыть меню Быстрые действия и рефакторинг. Выберите "ByVal" keyword is unnecessary and can be removed (Ключевое слово "ByVal" является необязательным и может быть удалено).
- Теперь доступна поддержка Интерактивного окна для нескольких сред выполнения, таких как .NET Framework и .NET Core.
- Доступен новый API RegisterAdditionalFileAction, позволяющий авторам анализаторов создать анализатор для дополнительных файлов.
Перенос текста в области "Подробности теста" Обозревателя тестов
Эта долгожданная функция позволяет пользователю выбрать перенос текста или оставить выравнивание строк текста по умолчанию. Если выравнивание текста не требуется, перенос может сделать результаты тестового запуска гораздо более наглядными и устранить необходимость в горизонтальной полосе прокрутки. Включить перенос можно в меню параметров Обозревателя тестов или в контекстном меню области "Сводка".
Средства XAML (WPF, UWP и Xamarin.Forms)
Улучшения диагностики ошибок привязки XAML
Разработчики, работающие над проектами WPF, UWP, WinUI и Xamarin.Forms, часто могут обнаруживать и устранять сбои привязки данных XAML в своих приложениях. Чтобы улучшить средства диагностики в этом сценарии, мы добавили две новых возможности в Visual Studio 2019 версии 16.8 или более поздней:
- Значок индикатора ошибки привязки XAML. Новый значок индикатора сбоя привязки XAML теперь отображается на панели инструментов в приложении для проектов WPF и UWP, а также в динамическом визуальном дереве для всех проектов XAML, включая Xamarin.Forms. Этот значок отображает индикатор красного цвета, если обнаружен хотя бы один сбой привязки. Щелкнув значок, вы перейдете в новое окно сбоев привязки XAML.
- Окно сбоев привязки XAML. Новое окно "Сбои привязки XAML" теперь доступно для проектов WPF, UWP, WinUI и Xamarin.Forms. В этом новом специальном интерфейсе содержатся подробные сведения о сбоях привязки, которые ранее были доступными только в окне вывода. Улучшения включают возможность просмотра сбоев в виде столбцов с поддержкой поиска, которые можно сортировать и настраивать. Мы также сгруппировали аналогичные ошибки, минимизируя шум, который может возникнуть при использовании определенных сочетаний сбоев шаблонов привязки данных. При этом все исходные необработанные сведения об ошибках остаются доступными и их можно копировать с помощью контекстного меню. (Примечание. Требуется Xamarin версии 4.5.0.266-pre3 или более поздней.)
- Перейдите к источнику для сбоев привязки. В партнерстве с командой WPF мы включили возможность перехода к источнику сбоев привязки для тех клиентов, которые нацелены на WPF в .NET 5 (RC2 или более поздней версии).
Горячая перезагрузка XAML
- Горячая перезагрузка XAML для Xamarin.Forms (только изменения) теперь поддерживает UWP. В этом выпуске реализована очень востребованная функция, позволяющая с помощью Горячей перезагрузки XAML вносить изменения в проекты Xamarin.Forms для платформы UWP. Обратите внимание, что эта функция все еще находится в разработке. Вносимые в XAML изменения теперь повлекут активацию обновлений в работающем приложении, тогда как другие возможности, такие как действия на панели инструментов в приложении (выбор элементов и пр.), пока не полностью реализованы, но мы включим их в один из новых выпусков.
- Параметры горячей перезагрузки XAML перемещены в раздел "Отладка" > "Горячая перезагрузка": В этом выпуске мы объединили параметры Горячей перезагрузки XAML для WPF, UWP и Xamarin.Forms в единое окно параметров в разделе "Отладка" > "Горячая перезагрузка". Мы также добавили возможность отключать и включать Горячую перезагрузку XAML для каждой платформы, чтобы вы могли управлять доступностью этой функции. (Примечание. Параметры не будут изменены во время этой миграции, поэтому все существующие варианты будут оставаться в силе только в этом новом расположении)
Редактор кода XAML.
- Поддержка IntelliSense WinUI 3.0. В этом выпуске мы включили улучшенную поддержку IntelliSense для разработчиков, создающие приложения с помощью новой версии WinUI 3.0 ( предварительная версия 3 или более поздней версии). Дополнительные сведения о WinUI 3.0 см. в документации. Оставить отзыв можно в репозитории GitHub XAML пользовательского интерфейса Windows. Примечание. Последняя предварительная версия WinUI 3.0 рекомендуется в версии 16.9 ( предварительная версия 1) для обновленного интерфейса инструментов.
- Улучшение поддержки MVVM: при создании документа XAML можно задать d:DataContext, чтобы получить точную привязку IntelliSense для документа XAML. Ранее указание типа контекста данных вручную было утомительным. Приходилось выходить из документа XAML, находить нужный тип модели представления, копировать и вставлять его пространство имен и имя в объявление d:DataContext. В этом выпуске мы представляем новую функцию, которая позволяет быстро объявить d:DataContext с помощью значка лампочки, который предлагает возможных кандидатов на модель представления.
Расширяемость
- Заполнение элементов из пакетов NuGet без ссылок. В этом выпуске мы добавили поддержку конкретных файлов TargetFrameworkMoniker VisualStudioToolsManifest.xml при заполнении панели элементов элементами управления из пакетов NuGet без ссылок. Например, пакет может предоставлять различные наборы элементов управления для проектов .NET Core 3.1 и .NET 5.0.
От сообщества разработчиков
- Невозможна компиляция приложений WPF, предназначенных для .NET 5.
- После запуска msbuild.exe из командной строки для Xamarin.iOS происходит зависание при завершении работы.
- Отключение IntelliCode 2.2.733.31896 прерывает работу TypeScript 3.x с выводом исключения CompositionFailedException при редактировании файла .ts.
- IntelliSense для TypeScript постоянно останавливается.
- VS2019 C++ — создание недопустимого кода при использовании оптимизации.
- Фоновые задачи бесконечно выдают сообщение "Выполняется операция IntelliSense C/C++".
- Ошибка конструктора WPF: вычисленный путь к узлу недопустим — null->Window:Grid.
- Исчезает процесс Visual Studio 16.8.0, предварительная версия 4.
- Прокрутка окна параметров исключений приводит к аварийному завершению VS.
- Макрос USE_ATL_THUNK2 из atlstdthunk.h не может быть неопределенным
- Частые сбои Visual Studio Community 2019 16.7.x
- Переход к диспетчеру пакетов NuGet аварийно завершает работу Visual Studio
- ASan с AVX2 информирует stack-buffer-overflow
- Не удается закрыть VisualStudio — не удается получить доступ к удаленному объекту
- Обнаружено исключение типа NullReferenceException.
- Проблемы с шаблоном анализатора Visual Basic
- VS аварийно завершает работу при вводе в файле .cs
- Новые проверки вариантов в Code Analysis C++ (VS 2019 с обновлением 8 предварительной версии 3) не выполняются или не работают
- Открытие решения C++ с внешними файлами зависимостей приводит к тому, что на вкладках файла внешних зависимостей отображается сообщение, информирующее об ошибке, которая произошла в...
- Сборки C++ с пакетом Windows SDK 8.1 завершаются со сбоем после обновления до Visual Studio 16.7
- ARM64 C++: регрессия 16.4 - и 16.5+.
- CSPROJ-файл был изменен на диске. Закройте редактор и снова откройте его.
- Остановлена работа ServiceHub.Host.CLR.x64
- ASAN x64 — CMake не поддерживается
- Компиляция VS2019 WSL C++ периодически завершается сбоем, если в качестве максимального числа заданий параллельной компиляции задано число доступных процессоров
- При перестроении проекта удаляется вся выходная папка (удаленная компиляция)
- VS2019 по-прежнему очищает каталог CMakeBuild при каждом касании CMakeFiles.txt или CMakeSettings.json
- IntelliCodeCppPackage не удается загрузить
- Ошибка сборки в конфигурации WSL проекта CMake, вызванная префиксом /mnt/
- CMake : Переменные среды, созданные в CMakeSettings.json, больше не разворачиваются после обновления до VS 16.7
- Расширение "Сравнение схем" не вычисляет переменные SQLCMD при сравнении пакета DACPAC с исходным кодом проекта
- При разделении сборки и отладки не должны развертываться файлы с расширением .o
- Модуль с разделом не компилируется
- При переключении на вкладку появляется сообщение «Работаем над этим»
- Отладчик S2019 для Visual Studio путает несколько переменных с одинаковыми именами
- Выделение разделителя строкового литерала после квадратной скобки
- Невозможно определить сопрограмму с promise_type, не конструируемым по умолчанию
- C/C++ IntelliSense: после ввода var не отображается список элементов. после арифметического оператора в файлах C
- Ссылки в Codelens не обновляются при внесении изменений кода в другой файл
- Функция перехода к определению переходит к конструктору std::function вместо класса лямбда-выражения аргумента
- Компилятору шейдера HLSL не удается создать выходной каталог для файлов заголовков
- Непредвиденная ошибка C2027: использование неопределенного типа при использовании шаблонов с /permissive
- D9025: переопределение '/sdl-' на '/GS-'
- constexpr, кажется, неправильно обрабатывает ссылку на указатель
- Документ уже открыт в качестве проекта или решения и не может быть открыт в редакторе в настоящее время.
- Тестирование кода на операторе switch перестало работать в 16.7
- C5045 предупреждение выводится, несмотря на то, что оно отключено
- В Xamarin.Forms не удается создать архив для iOS.
- CImage::Draw() имеет неоднозначный вызов DrawImage() в 16.7.0 Preview1
- Отсутствуют представления при загрузке проекта с помощью меню "Недавние" значка программы, закрепленного на панели задач.
- C++: компилятор неправильно выбирает потенциальную перегрузку.
- Не удается создать проект VSIX на VB с помощью CodeFix.
- В VS 2019 в окне "Результаты поиска" не применяются заданные настройки шрифта и цвета.
- При редактировании файла. editorconfig в большом проекте существенно снижается производительность редактора, повышается загрузка ЦП и ОЗУ и иногда происходит аварийное завершение.
- При нажатии клавиш CTRL+F результаты поиска отображаются в виде текста, хотя ожидается увидеть их в новом окне структурированных результатов поиска.
- Исчезла кнопка "Опубликовать".
- Элемент "Сохранить" не работает.
- Имя решения/проекта длиннее 60 символов недопустимо.
- Сообщение о том, что у вас есть новая лицензия для Visual Studio Enterprise 2019.
- Представление Git в темном режиме выглядит неправильно.
- Visual Studio 2019 аварийно завершает работу при анализе кода в фоновом режиме и не восстанавливает файлы.
- Невозможно добавить учетную запись Apple Developer с двухфакторной проверкой подлинности.
- Выражение свертывания в noexcept выдает синтаксическую ошибку.
- Золотой бар после исключения RPC в StreamPipeReader.AdvanceTo: операция чтения не завершена.
- Сбой проекта SQL Server при редактировании столбцов с помощью панели конструктора.
- Предварительная версия Visual Studio 2019: репозиторий ssh+git:// не запрашивает учетные данные, а вместо этого сообщает об ошибке.
- Std::enable_if не удаляет оператор преобразования из набора перегрузок.
- Страница запроса на вытягивание испорчена.
- Проблема с SFINAE enable_if_t.
- Std::condition_variable::wait_for(0) не снимает блокировку
- Использование адреса временного объекта не перехватывается компилятором.
- Возникает NullPointerException при переименовании класса вместе с файлом символа.
Известные проблемы
Просмотрите все открытые проблемы и доступные решения в Visual Studio 2019, перейдя по ссылке ниже.
Отзывы и предложения
Мы будем рады узнать ваше мнение! Вы можете сообщить о проблемах, щелкнув пункт Сообщить о проблеме в правом верхнем углу установщика или самой IDE-среды Visual Studio. Значок находится в правом верхнем углу. Вы можете предлагать для продукта новые функции, задавать вопросы, находить ответы и отслеживать решение своих проблем в сообществе разработчиков Visual Studio. Кроме того, вам доступна бесплатная поддержка в чате по вопросам с установкой.
Блоги
Воспользуйтесь аналитикой и рекомендациями с сайта Developer Tools Blogs. Там вы найдете актуальные сведения обо всех новых выпусках и сможете читать публикации с подробным анализом самых разных функций.
Журнал заметок о выпуске Visual Studio 2019
Дополнительные сведения о предыдущих версиях Visual Studio 2019 см. на странице Журнал заметок о выпуске Visual Studio 2019.