2019Logo Visual Studio 2019 版本 16.10 发行说明



提示

观看 Visual Studio 2022 启动事件的录制内容,了解新增功能、收听技巧 & 技巧,以及下载免费的数字顺手牵羊。

开发者社区 | 系统要求 | 兼容性 | 可分发代码 | 许可条款 | 博客 | 最新版本已知问题 | Visual Studio 新增功能文档


单击按钮即可下载最新版 Visual Studio 2019。 有关如何安装和更新 Visual Studio 2019 的说明,请参阅将 Visual Studio 2019 更新到最新版本。 另请参阅如何脱机安装的说明。

Community Download Button Professional Download Button Enterprise Download Button


Visual Studio 2019 版本 16.10 的新增内容

Visual Studio 2019 版本 16.10 发行版

Visual Studio 2019 已存档的发布说明

Visual Studio 2019 博客

可从 Visual Studio 2019 博客获取来自 Visual Studio 工程团队的官方产品见解。 有关 Visual Studio 2019 版的详细信息,可参阅以下文章:


16.10.5 Visual Studio 2019 版本 16.10.5

发布日期:2021 年 8 月 10 日

此发行版 Visual Studio 2019 版本 16.10.5 的新增内容摘要

此版本的 Visual Studio 2019 仅通过 Windows 软件更新服务 (WSUS) 提供。

此版本中已修复的主要问题

  • iOS 远程模拟器现在可正常使用安装了 Xcode 12.4 或 12.5 的配对 Mac 设备。 与安装了 Xcode 12.4 或更高版本的 Mac 设备配对时,以下 Xcode 模拟器功能不可用:
    • 模拟内存警告
    • 模拟位置

安全顾问公告

CVE-2021-26423 .NET Core 拒绝服务漏洞

存在拒绝服务漏洞,在这种情况下,提供 WebSocket 终结点的 .NET (Core) 服务器应用程序在尝试读取单个 WebSocket 帧时可能会陷入无限循环。

CVE-2021-34485 .NET Core 信息泄漏漏洞

使用 Linux 和 macOS 上的全局读取权限创建由工具创建的用于收集故障转储和按需转储的转储时,存在信息泄漏漏洞。

CVE-2021-34532 .NET Core 信息泄漏漏洞

如果无法分析 JWT 令牌,则记录该令牌时存在信息泄漏漏洞。

16.10.4 Visual Studio 2019 版本 16.10.4

发布时间:2021 年 7 月 20 日

此发行版 Visual Studio 2019 版本 16.10.4 的新增内容摘要

此版本中已修复的主要问题

  • 删除 memset 中不允许使用的寄存器。
  • 修复了涉及包含按位非运算符的复杂嵌套表达式的 Codegen bug。
  • 修复了 VS 图形分析器的着色器调试
  • 修复了在类中模板专用化过程中处理静态数据成员时发生的 IntelliSense 故障。
  • 与 /installer /passive 开关一起运行时,X64 VC 可再发行程序包不再删除运行时文件。
  • 更正了在预配“包含目录”时包含搜索顺序可能不正确的问题。
  • 我们已修复了一个检查器扩展所导致的性能问题和误报,此问题会发现滥用 VARIANT 的 bug。
  • 我们已修复了一个检查器扩展所导致的性能问题,此问题会发现滥用枚举值作为索引的 bug。
  • 引入 Live Share 语言服务修补程序,恢复了协作会话参与者的主要代码编辑功能(代码完成、语法高亮、错误等)。
  • 并发分析器不应再生成自动锁模式的错误警告 C26110(获取锁失败)。
  • C# 和 Visual Basic 编译器修复了涉及 InternalsVisibleTo 与其他程序集级属性冲突的故障。
  • 我们修复了客户在使用 Windows 应用程序打包项目(如 WPF NetCore 应用和 Project Reunion 应用)来打包项目时遇到的一个问题:

找不到错误资产文件“...\obj\wappublish\win10-x86\project.assets.json”。 运行 NuGet 包还原以生成此文件。 App4 (Package) C:\Program Files\dotnet\sdk\5.0.302\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets 242

这个问题是由于打包项目在错误的目录 (win10-$(configuration)) 中查找 project.assets.json 文件导致的,它应该在 win-$(configuration) 中查找。

来自开发者社区


16.10.3 Visual Studio 2019 版本 16.10.3

发布日期:2021 年 6 月 29 日

此版本 Visual Studio 2019 版本 16.10.3 的新增功能摘要

此版本中已修复的主要问题

  • 修复了从模块导入的符号上的“转到定义”有时转到模块文件的开头而不是符号的定义的问题。
  • 修复了由于文本框边框颜色的光度比小于 3:1,导致视力受损的开发人员难以识别屏幕上的焦点的问题。
  • 修复了数据库项目:将文件从解决方案资源管理器拖动到打开的文件时,将从文件系统中删除该文件。
  • 修复了在数据库项目中使用 merge 语句将导致生成错误的问题。
  • 在报告安装哪些扩展时,不再在磁盘上发送路径。
  • 修复了试图关闭“快速入门”窗口可能导致 Visual Studio 崩溃的问题。
  • 修复了显示工具窗口有时会造成 VS 崩溃的问题。
  • 修复了在应用程序中加载不相关的 G++/GCC 生成的符号时用户代码中的 C++“编辑并继续”。
  • 修复了 iAd 框架中的专用选择器用法。
  • 修复了 VS 中因 XAML 设计器中发生的错误而造成的故障
  • 修复了引用 .netcoreapp 项目的 Windows 应用程序打包项目生成 .msixbundle 的问题。
  • 修复了无法对 WAP 项目执行快速最新检查的问题,该问题会导致生成(而不是跳过)这些项目(即使项目是最新的且不需要修改),这进一步导致 IDE 中的增量生成时间增加。

来自开发者社区


16.10.2 Visual Studio 2019 版本 16.10.2

发布日期:2021 年 6 月 15 日

此版本 Visual Studio 2019 版本 16.10.2 的新增功能摘要

此版本中已修复的主要问题

  • 代码分析中的并发检查更智能。 它们很难被复杂的控制流所欺骗。
  • 此修补程序通过跳过对外部标头的分析并抑制来自外部标头的警告来恢复外部标头的行为。
  • 修复了 .aspx/ascx 文件,用户可能在其中看到不完整的 IntelliSense 或体验到较低性能。
  • 修复了 Unity CodeLens 提供程序在处理大型项目时的可伸缩性问题。
  • 恢复了 Azure 服务身份验证选项页中已翻译的字符串。
  • 修复了使用 Resharper 扩展时间歇性的 Visual Code 显示问题。
  • 修复了某些工具窗口、编辑器和设计器被渲染得太小而无法显示任何内容的问题。
  • 修复了运行应用或尝试将其发布到 App Store 时 Xamarin iOS 缺少应用图标的问题。
  • 使用 AOT+LLVM 生成项目不再因 XA3001 错误而失败。
  • 升级到 Visual Studio 2019 版本 16.10 后,在某些情况下,UWP 应用的发布可能会失败,并显示错误消息“在图像文件中找不到指定的资源名称”。 此问题现在已修复。
  • 修复了导致 Visual Studio 2019 在设备配置更改时停止响应的问题。
  • 修复了 MSBuild 中的三个问题:
    • 避免在 Azure DevOps 中生成时出现 MSB4017 错误。
    • $([MSBuild]::MakeRelative()) 再次在其输入中保留尾随斜线。
    • 具有尾随 ** 模式的排除 glob 再次排除没有 . 字符的文件 字符

来自开发者社区


16.10.1 Visual Studio 2019 版本 16.10.1

发布日期:2021 年 6 月 08 日

此版本 Visual Studio 2019 版本 16.10.1 的新增内容摘要

此版本中已修复的主要问题

  • 修复了导致 IntelliSense 编译器崩溃的问题。
  • 修复了在解决方案中打开测试资源管理器时,导致 Visual Studio 2019 实例无法关闭的问题。
  • 修复了开发人员从命令行生成部分解决方案时出现的故障。
  • 修复了 .NET Core 应用程序的 ClickOnce 发布中的故障。
  • 修复了调用堆栈窗口可能导致 Visual Studio 2019 崩溃的问题。
  • 修复了生成 iOS 绑定项目时的生成错误“找不到元数据文件 '***\bin\Debug\NativeLibrary.dll'”。

安全顾问公告

CVE-2021-31957 ASP.NET 拒绝服务漏洞

ASP.NET Core 未正确处理客户端断开连接问题时,存在拒绝服务漏洞。

来自开发者社区


16.10.0 Visual Studio 2019 版本 16.10.0

发布日期:2021 年 5 月 25 日

此版本 Visual Studio 2019 版本 16.10.0 的新增内容

C++

  • 所有 C++20 功能现已在 /std:c++latest 开关下提供。 尽管 MSVC 对 C++20 标准(目前由 ISO 发布)的实现已经完成,但是一些关键的 C++20 库功能预计会由即将发布的缺陷报告(ISO C++20 bug 修复)进行修改,这些缺陷报告可能会以一种 ABI 不兼容的方式对它们进行更改。 有关详细信息,请参阅 Microsoft/STL 问题 #1814
    • 16.10 中已添加 C++20 即时函数和 constinit 支持
    • 新时钟、闰秒、时区和解析<chrono>的最后几部分
    • 文本格式化<format>的实现
  • 除了 x64 之外,/openmp:llvm 现已在 x86 和 ARM64 上推出
  • 现可使用自定义编译警告等级和代码分析设置将包含目录指定为外部目录。
  • 添加了 /await:strict 开关以在以前的语言模式下启用 C++20 样式协同例程。
  • std::coroutine_handle<T> 的调试程序可视化效果现在可显示原始协同例程函数名、签名和当前挂起点。
  • 新增了对 CMakePresets 的支持。
  • 现在,在 Visual Studio 中添加新的远程连接时,需要接受或拒绝由服务器提供的主机密钥指纹。
  • 向 MSVC 添加了一个 /external 开关,用于指定出于警告目的哪个标头应被视为外部标头。

Docker 工具改进

  • 能够创建一个启动配置文件,用于配置将在 Compose 文件中启动的服务。
  • 能够标记映像。
  • 添加了适用于容器的“卷”选项卡。
  • 添加了适用于容器的“标签”选项卡。
  • 添加了适用于映像的“标签”选项卡。
  • 容器现在按 Compose 项目分组。

编辑器

  • 如果用户想要不那么拥挤的体验,可以通过在 Visual Studio 搜索 (Ctrl+Q) 中搜索“行距”来修改行行距。 该选项位于“文本编辑器”\“常规”下。
  • “在文件中查找”和“查找所有引用”具有可以保存结果的控件。 根据社区的反馈,我们添加了一个选项,用于在默认情况下开启“保存结果”选项。 通过在 Visual Studio 搜索 (Ctrl + Q) 中搜索“默认保存搜索结果”可以找到此选项。 该选项位于“环境”\“查找和替换”下。 请注意,用户当前使用“在文件中查找”只能获得 5 个结果,而使用“查找所有引用”则可以多获得 5 个结果。
  • “在文件中查找”有一个新选项可以让用户运行其他搜索,并将这些结果追加到以前的搜索中。

编辑器扩展性

  • 管理 IntraTextAdornmentTags 的代码的行为已发生更改。 对待此更改应像对待任何其他 ITagger 一样,当基础标记发生变化时,你也必须引发标记已更改事件。 否则,相应标记可能永远不会更新。

调试和诊断

  • 内存转储的诊断分析现在包括托管 Linux 核心转储。

Git 效率

  • 通过深层链接跳转到 Web 以创建新的拉取请求,并查看 GitHub 上的拉取请求或 Git 菜单中的 Azure DevOps。
  • 只需从分支选取器中选择一个分支,即可签出本地和远程分支。
  • 通过上下文菜单从存储库选取器中删除项。
  • 通过“Git”>“设置”开启相应功能,以便在打开 Git 存储库时自动加载解决方案。
  • 通过“Git”>“设置”切换双击签出“Git 存储库”窗口中分支的行为。
  • 将你的分支与“Git 更改”窗口溢出菜单中的多个远程分支进行同步(先“拉取”后“推送”)。
  • 自定义“Git 更改”窗口溢出菜单中可见的工具栏操作(提取、拉取、推送、同步)。
  • 在浏览器中从“Git 更改”窗口的溢出菜单打开存储库。
  • 在状态栏中搜索和签出本地分支和远程库分支。
  • 在状态栏中搜索并切换本地 Git 存储库。
  • 修复了在 Visual Studio 启动时 Git 菜单中的本地存储库列表不加载的问题。
  • 打开存储库时,将嵌套项目子存储库添加到本地存储库列表。
  • 在通过“Git”>“设置”切换存储库时,将解决方案保持打开状态。
  • 在通过“Git”>“设置”打开存储库时,关闭打开的文件夹。
  • 通过状态栏中的“未推送的提交”按钮和 Git 菜单中的“同步”命令中将分支与远程库同步。
  • 即使没有传入的提交,也可以从“Git 存储库”窗口的“历史记录”窗格中提取和拉取。
  • 查看“Git 存储库”窗口中嵌入的提交详细信息和文件更改比较。
  • 打开 Azure DevOps Git 存储库时,自动重新连接或提示建立初始 Azure DevOps 连接。
  • 对可见的分支名称进行合并和变基,替换混乱的源/目标术语。
  • 改进了解决方案资源管理器中的源代码管理字形的性能和可靠性。
  • 保留“Git 存储库”窗口中的传入/传出部分,即使是空的。
  • 将“Git 更改”窗口中多个远程库的“提取”/“拉取”/“推送”下拉列表合并为一个“操作”菜单。

.NET 效率

  • 方法调用中的参数补全
  • EditorConfig UI
  • 目视检查并浏览继承链
  • 对强制转换、索引器和运算符的 IntelliSense 补全
  • 对源生成器的调试器支持
  • 对 Visual Basic 的代码清理支持
  • 编辑并继续 (EnC) 更新
  • 删除未用引用
  • 智能换行
  • 简化 LINQ 表达式的重构
  • 对 Enum 值进行 IntelliSense 补全
  • IntelliSense 补全模式设置
  • 新行的代码样式首选项
  • 对源生成器的“查找所有引用”支持

Razor (ASP.NET Core) 预览版编辑器

  • IntelliSense 补全的更新
  • 对通用组件的“转到定义”支持
  • 制表符和空格的新代码样式配置
  • “工具选项”中的 Razor 文本编辑器现在称为 Razor (ASP.NET Core)

测试体验辅助功能改进

  • Console.Writeline 现在显示在测试资源管理器中
  • 测试输出现在可以保留标记,因此即使从日志文件中也可以浏览超链接和堆栈跟踪链接。
  • 如果输出超过 300 个字符,或者附加到测试结果的文件超过 10 个,则会为单个测试结果创建日志文件。
  • 日志文件现在也可以在预览中打开,这样可以更轻松地管理选项卡。
  • 日志文件和测试资源管理器支持按 Ctrl PgUp/PgDn 导航光标,并按 Shift + Ctrl PgUp/PgDn 进行选择。
  • 日志文件编辑器现在正在使用 IVsTextView 接口,这意味着它现在能够打开非常大的文本文件。 这样,用户就无需 Copy All 截断日志并在记事本等单独的编辑器中打开它们。 对于 MSTest,我们现在还加入了一个聚合了所有输出的单个日志文件,而不是对每个数据行使用单独的日志文件。
  • 现在,你可以在 Ubuntu 和 Alpine 上的命令行使用 dotnet cli 获得跨平台代码覆盖率。 对于希望在针对这些平台的计算机上获得代码覆盖率的用户,你现在可以添加通常在 Windows 上使用的相同代码覆盖率收集命令。 查看更多关于 dotnet test 的文档。
  • 现在,测试资源管理器中的“全部折叠”按钮旁边有一个“全部展开”按钮。 此命令已可以通过键盘快捷键(Ctrl+A,Ctrl+ 向右键)使用,但是更多的反馈表明添加一个按钮值得额外的 UI。 依旧感谢你让我们通过 https://developercommunity.visualstudio.com/ 了解了你的想法。
  • 测试资源管理器显示“过期”的方式也有一些细微的更改。 “过期”指灰显或“褪色”测试结果,指示结果不是来自最新的测试运行。 如果结果不是最近的测试运行的一部分,它将显示为过时。 以前,新的测试发现(甚至是重新发现的旧测试结果)也用纯色图标显示。 这引起了一些困惑 - 为何一些“未运行”测试显示为褪色,而其他的则没有。 此更改将降低过期的复杂性。
  • 通过持久化测试结果功能(在版本 16.2 中添加),即使关闭并重新打开 Visual Studio,也可以看到上次测试运行的测试结果。 这可以帮助用户记住其中断位置,并提供更多上下文,而无需再次测试运行。 我们还修改了持久化结果的行为,这样它们将始终显示为过时。 这更好地表明它们不是来自在当前 Visual Studio 会话期间执行的测试运行。

Web 工具

  • 切换到 API V2 进行 Azure AD 预配
  • 作为连接服务的 Azure 应用程序配置现在支持动态配置

Windows 应用程序打包项目依赖项树

  • 向 WAP 项目添加了“依赖项树”

XAML 工具改进

  • 为 Xamarin.Forms 用户改进了 XAML IntelliSense 和 XAML 热重载
  • 在 WPF 中为精选 ItemsControls 引入了 XAML 示例数据
  • 添加了新的灯泡以快速访问常编辑的属性
  • 在 XAML 编辑器中添加了新的灯泡,以帮助创建视图模型

Service Fabric 工具

  • Service Fabric 应用程序中引入 StartupServices.xml

Visual Studio 2019 版本 16.10 的新增功能的详细信息

Docker 工具

容器工具窗口

在此版本中,我们升级了容器工具窗口,使其更容易查看和与容器和映像交互。 只需导航到“视图”>“其他 Windows”>“容器”,即可试用新功能。

  • 容器现在按 Compose 项目分组。 这样可以很容易地判断哪些容器代表你的应用程序。 此外,我们在容器中添加了“标签”选项卡,以便你可以轻松地查看在开发期间使用的标签。

Compose 分组选项和容器“标签”选项卡

  • 我们还添加了适用于映像的“标签”选项卡。

图像标签选项卡

  • 使用新的“卷”选项卡可以查看正在运行的容器的卷,甚至可以在 Visual Studio 中打开这些文件。

容器“卷”选项卡

  • 现在,我们支持在“容器”工具窗口中标记映像功能。 在“映像”中,右键单击映像并选择“标记” 。

标记图像

撰写
  • 通过 Visual Studio 中的 Docker Compose 工具,现在可以运行 Compose 文件中定义的任何服务组合。 打开“调试”下拉菜单,或者右键单击 docker-compose 项目,选择“管理 Docker Compose 启动设置”即可开始。

管理 Docker Compose 启动设置

Git 效率

  • 为了更轻松地在 Visual Studio 中创建拉取请求,我们向网页添加了深层链接快捷方式的菜单项,你可使用这些菜单项创建 PR 或查看存储库的 PR 列表。 菜单位置不固定,具体取决于存储库是位于 GitHub 还是 Azure DevOps。

从 Git 菜单创建 PR 并查看 Web 上的 PR 列表

  • 在选择单一分支时,状态栏和“Git 更改”窗口中的分支选取器现在会签出本地或远程分支。 你可在上下文菜单中找到其他操作。

左键单击签出分支,然后右键单击以执行其他操作

  • 状态栏中的新存储库选取器在右键单击后会显示上下文菜单,你可使用此菜单从列表中删除项。

通过上下文菜单从存储库选取器列表中删除项

  • 使用存储库选取器或 Git 菜单“本地存储库”列表时,打开存储库后,系统不再自动加载解决方案。 相反,你将在可供选择的列表中看到文件夹视图和可获取的解决方案。 通过“Git”>“设置”,你可借由切换复选框更改此行为。

  • 通过双击分支名称,你可选择从“Git 存储库”窗口签出分支。 如要更改此行为,请通过“Git”>“设置”切换复选框。

用于切换自动加载和分支签出的设置。

  • 你现可从“Git 更改”窗口执行更多操作。 工具栏图标可以自定义,让你自行选择要显示的操作。 你可以与溢出菜单中的多个远程分支保持同步。 你可以在浏览器中打开存储库的远程网页。

“Git 更改”溢出菜单,其中标注了“同步”、“在浏览器中打开”和“工具栏操作”。

  • 在状态栏分支选取器中搜索本地和远程库分支并执行常见分支操作。

状态栏中的分支选取器。

  • 在状态栏存储库选取器中搜索并切换本地 Git 存储库。

状态栏中的存储库选取器。

  • 修复了 Git 菜单中的本地存储库列表在 Visual Studio 启动时不加载的问题
  • 我们在“Git”>“设置”中添加了两个新选项,用于管理打开和切换存储库的方式。 现在,可以在切换到其他存储库时将当前解决方案保持为打开状态

用于将解决方案保持打开状态的设置。

  • 还可以选择在打开存储库时不加载存储库根文件夹。

用于打开文件夹的设置

  • 通过状态栏中的“未推送的提交”按钮和 Git 菜单中的“同步”命令中将分支与远程库同步(拉取后推送)。

状态栏中的“同步”按钮。

  • 即使没有传入的提交,也可以从“Git 存储库”窗口的“历史记录”窗格中提取和拉取。 在状态栏或使用键盘快捷方式 Ctrl+0+Y 访问这些部分。

“Git 存储库”窗口的“传入”部分,其中标注了“提取”和“拉取”按钮。

  • 在“Git 存储库”窗口中选择“提交”可以查看其详细信息和文件更改的比较,而无需导航到其他窗口。 选择两个提交并单击右键,在同一窗口中进行比较。 在他们自己的窗口中弹出详细信息,通过全屏模式深入了解这些更改。

“Git 存储库”窗口中的嵌入提交详细信息和文件比较。

  • 查看文件中的删除和插入操作数,更改比较的布局。

弹出“提交”窗口,其中标注了文件更改数和工具栏中的布局视图按钮

  • 打开 Azure DevOps Git 存储库时,自动重新连接或提示建立初始 Azure DevOps 连接。 这样,便可以访问打开的存储库的工作项和生成。

“Git 更改”窗口中的信息栏,提示连接到当前存储库的 Azure DevOps。">

  • 解决变基或合并冲突时,合并编辑器和上下文菜单将显示当前和传入分支的分支名称。 这修复了混乱的源和目标术语

解决冲突时上下文菜单显示分支名称。

变基和合并编辑器在标题中显示分支名称。

.NET 效率

  • 添加了“删除未用引用”命令,便于清理未用的项目引用和 NuGet 包。 此选项默认处于禁用状态,因此你需要在“工具” > “选项” > “文本编辑器” > “C#” > “高级”中启用它,然后选中“在解决方案资源管理器(实验性)中显示‘删除未用引用’命令”。 在启用此选项后,“删除未用引用”命令就会显示在解决方案资源管理器中项目名称或依赖项节点的右键单击菜单中:

“删除未用引用”命令

选择“删除未用引用”会打开一个对话框,你可以在其中查看要删除的所有引用,并能选择保留要保留的引用:

“删除未用引用”对话框

  • 新增了名为“智能换行”的命令,当你使用“Shift+Enter” 作为提交字符时,它会自动插入一组大括号,并在这些大括号内放置插入点。 智能换行适用于所有需要大括号以及属性、事件、字段和对象创建表达式的类型声明。 下面的示例展示了对类和字段使用的智能换行。 如果字段的末尾没有分号,那么键入“Shift+Enter” 会通过添加一组大括号将字段转换为属性。 你可以再次按“Shift+Enter”来撤消提交,这还会自动在字段的末尾添加分号 :

智能换行

  • 现在有可以 简化 LINQ 表达式的重构,这将删除对 .Where() 方法的 Enumerable 的不必要调用,从而帮助改进性能和可读性。 将光标置于 LINQ 表达式上。 按 (Ctrl+.) 触发“快速操作和重构”菜单 。 选择“简化 LINQ 表达式”。

简化 LINQ 表达式

  • 现在,当类型已知时,即使没有输入 Enum 名称,也会对 Enum 值进行 IntelliSense 补全。

对 Enum 值进行 IntelliSense 补全

  • 新增了 IntelliSense 补全模式设置,让你能够设置默认补全选项。 通过依次转到“工具” > “选项” > “文本编辑器” > “高级” > “默认 IntelliSense 补全模式”,可以找到此新设置,在其中能够选择以下选项:“上次使用”- 保留你上次按下“Ctrl+Alt+空格”使用的设置;“仅选项卡” - 仅在选项卡上补全;以及,“自动” - 这是将补全标点和特殊字符的当前默认行为。

IntelliSense 补全模式设置

  • 新增了新行的代码样式首选项。 可以使用 EditorConfig 文件或在“工具” > “选项” > “文本编辑器” > “C#” > “代码样式” > “新行首选项(实验性)”来配置这些首选项。

新行的代码样式选项

例如,可以将代码样式首选项设置为,报告诊断并提供代码修复来删除多余的空白行:

代码修复删除多余的空白行

  • 现在有对源生成器的“查找所有引用”支持,让你能够在源生成的文档中查找引用。

  • 现在添加了一个补全选项,它可以在编写方法调用时自动插入参数。 此功能默认关闭,因此需要在“工具”>“选项”>“文本编辑器”>“C#”>“IntelliSense”中启用该功能,并选择 Tab 键两次来插入参数(实验性)。 开始编写方法调用,并按 Tab 键两次 (Tab+Tab)。 请注意,该方法调用包含基于该方法的默认值的参数。 然后,你可以使用参数信息按向上键和向下键循环浏览你想插入的参数列表。 你也可以开始键入一个参数来调出 IntelliSense 补全列表,然后键入分号以提交该参数,并在方法调用的末尾添加一个分号。

方法调用参数补全

  • 我们为 EditorConfig 创建了一个 UI。 从解决方案中打开任何 C# 或 Visual Basic EditorConfig 文件。 请注意,新 UI 将针对 C# 和 Visual Basic 打开显示代码样式和代码质量配置选项。

EditorConfig UI

  • 现在添加了用于浏览和检查继承链的可视化表示形式。 此选项默认关闭,因此需要在“工具”>“选项”>“文本编辑器”>“C#”>“高级”中打开它,并选择“显示继承边距”。 启用继承边距将向边距添加新图标,表示代码的实现和替代。 单击“继承边距”图标将显示可以选择导航到的继承选项。

“继承边距”图标

  • 现在添加了对强制转换、索引器和运算符的 IntelliSense 补全。

对强制转换、索引器和运算符的 IntelliSense 补全

  • 现在添加了对源生成器的调试器支持。 首先需要通过 Visual Studio 安装程序安装 .NET COMPILER PLATFORM SDK 组件。 然后,需要将 <IsRoslynComponent>true</IsRoslynComponent> 属性添加到项目文件。 接下来,在“项目属性调试”页中启用“Roslyn 组件”调试器选项,然后选择相应的目标项目。 接下来,在生成器项目上按 F5,这将启动生成目标项目的 CSC.exe/VBC.exe,使你能够调试生成器代码。

源生成器调试程序

源生成器调试程序目标项目

在此版本中,我们还在 Visual Studio 的编辑并继续 (EnC) 调试体验中添加了以下增强功能:

  • 现在可以将更改应用到分部类中的代码中。
  • 现在可以在生成的源文件内应用更改。
  • 现在可以添加和/或更改 using 指令。
  • 提高了可靠性并降低了内存消耗。

目前只要支持 EnC,所有这三项更改均可用,并且这三项更改适用于 C# 和 Visual Basic 源文件。

调试程序和诊断

  • 我们已经开发了多个分析器来帮助捕获托管内存转储中的常见问题。 现在可以对托管 Linux 核心转储执行此分析。

自动分析内存转储

谢谢!

最后但同样重要的是,非常感谢以下人士,他们在这个月对 .NET 效率(又名 Roslyn)做出了贡献:

Razor (ASP.NET Core) 预览版编辑器

新的预览版 Razor 编辑器现在支持以下 Razor 编辑功能:

  • IntelliSense 补全现在可以筛选 HTML 组件、TagHelper 元素和 C# 属性:

Razor IntelliSense 筛选器

  • 对 C# 替代项进行 IntelliSense 补全。
  • 对通用组件的“转到定义”支持。
  • 制表符和空格的新代码样式配置选项。 键入、格式化和创建新的 Razor 文件时,将遵循这些代码样式。 可以在“工具”>“选项”>“文本编辑器”>“Razor (ASP.NET Core)”>“制表符”中配置制表符和空格。
  • “工具选项”中的 Razor 文本编辑器已从 ASP.NET Core Razor 语言服务重命名为 Razor (ASP.NET Core) 。

若要启用新预览版 Razor 编辑器,请转到“工具”>“选项”>“环境”>“预览功能”,选择“启用实验性 Razor 编辑器”,然后重新启动 Visual Studio。

测试体验辅助功能改进

  • Console.Writeline 现在显示在测试资源管理器中! 长输出在“测试详细信息摘要”窗格中显示为可折叠部分。 超过特定长度的输出将显示前面几行,后面部分将被截断,同时提供在单独的窗口中打开测试日志的选项。 如果超过 20 帧,则堆栈跟踪将截断,然后仅显示前 10 帧和后 10 帧。 截断设计的重要部分集中在测试运行具有大量输出时减少 VS 冻结。 具有大型输出的测试将不再阻止 UI 线程。

测试输出包含 Console.Writeline

  • 测试输出现在可以保留标记,因此即使从日志文件中也可以浏览超链接和堆栈跟踪链接。 这些链接现在也很容易通过键盘输入。

测试输出会保留超链接和堆栈跟踪

测试日志还会保留超链接和堆栈跟踪

  • 如果输出超过 300 个字符,或者附加到测试结果的文件超过 10 个,则会为单个测试结果创建日志文件。 日志文件现在也可以在预览中打开,这样可以更轻松地管理选项卡。 日志文件和测试资源管理器支持按 Ctrl PgUp/PgDn 导航光标,并按 Shift + Ctrl PgUp/PgDn 进行选择。

通过键盘快捷键,可以更轻松地选择测试日志

  • 日志文件编辑器现在正在使用 IVsTextView 接口,这意味着它现在能够打开非常大的文本文件。 这样,用户就无需 Copy All 截断日志并在记事本等单独的编辑器中打开它们。 对于 MSTest,我们现在还加入了一个聚合了所有输出的单个日志文件,而不是对每个数据行使用单独的日志文件。

测试工具

  • 现在,你可以在 Ubuntu 和 Alpine 上的命令行使用 dotnet cli 获得跨平台代码覆盖率。 对于希望在针对这些平台的计算机上获得代码覆盖率的用户,你现在可以添加通常在 Windows 上使用的相同代码覆盖率收集命令。 查看更多关于 dotnet test 的文档。
  • 现在,测试资源管理器中的“全部折叠”按钮旁边有一个“全部展开”按钮。 此命令已可以通过键盘快捷键(Ctrl+A,Ctrl+ 向右键)使用,但是更多的反馈表明添加一个按钮值得额外的 UI。 依旧感谢你让我们通过 https://developercommunity.visualstudio.com/ 了解了你的想法。
  • 测试资源管理器显示“过期”的方式也有一些细微的更改。 “过期”指灰显或“褪色”测试结果,指示结果不是来自最新的测试运行。 如果结果不是最近的测试运行的一部分,它将显示为过时。 以前,新的测试发现(甚至是重新发现的旧测试结果)也用纯色图标显示。 这引起了一些困惑 - 为何一些“未运行”测试显示为褪色,而其他的则没有。 此更改将降低过期的复杂性。
  • 通过持久化测试结果功能(在版本 16.2 中添加),即使关闭并重新打开 Visual Studio,也可以看到上次测试运行的测试结果。 这可以帮助用户记住其中断位置,并提供更多上下文,而无需再次测试运行。 我们还修改了持久化结果的行为,这样它们将始终显示为过时。 这更好地表明它们不是来自在当前 Visual Studio 会话期间执行的测试运行。

上一次 Visual Studio 会话中的持久化测试结果显示为褪色

Web 工具

通过动态配置,可以自动使用中间件来刷新配置资源。 作为连接服务的应用程序配置现在可以自动将动态配置集成到应用程序中。 若要使用此连接服务,请单击“连接服务”,然后将 Azure 应用程序配置添加为服务依赖项

Windows 应用程序打包项目“依赖项树”

  • 在去年工作的基础上,为在 Windows 应用程序打包项目 (WAP) 中启用 NuGet 包引用,我们已在 WAP 的解决方案资源管理器中启用新 UI。 旧版界面不会显示这些包引用,也不可通过 UI 添加 NuGet 包。

Windows 应用程序打包项目旧版用户界面。

  • 在新版界面中,我们已借助 CPS 和 .NET 项目系统启用“依赖项树”,该树不仅仍可通过“应用程序”子树显示项目引用,而且还提供“包”子树来帮助你管理 NuGet 包。

Windows 应用程序打包项目新版用户界面。

XAML 工具改进(WPF 和 Xamarin.Forms)

Xamarin.Forms

在此版本中,我们为 Xamarin.Forms 客户对 XAML IntelliSense 和 XAML 热重载做了两个小的改进。 热重载“仅更改”将不再针对以下项报告假错误:

  • VisualStateManager 中引用属性但不指定类型的资源库,例如 <Setter Property="BackgroundColor" Value="Red">
  • 未包装到 <ResourceDictionary.MergedDictionaries> 元素中的已合并 ResourceDictionaries

示例:

    <Application>
    <Application.Resources>
        <ResourceDictionary Source='Colors.xaml'/>
        <Style TargetType='Label'> ... <Style>
    </Application.Resources>
    </Application>

XAML 示例数据

在此版本中,我们通过引入一种新方法将一般示例数据添加到 ItemsControls,进一步增强了 XAML 设计器的设计时数据功能。 此功能仅适用于 WPF 中的 ListBox、ListView 和 DataGrid。

  • 通过对 ListBox、ListView 或 DataGrid 设置 d:ItemSource='{d:SampleData}' 可以启用示例数据
  • 这会在设计器中仅使用一组与 DataTemplates 和绑定路径匹配的 5 个项来填充控件
  • 可以使用 ItemCount 属性来更改生成的项数,例如:d:ItemSource='{d:SampleData ItemCount=3}'

显示示例数据的 ListBox。

XAML 设计器快速操作

  • XAML 设计器中选定控件的角落附近有一个新灯泡,该工具可用于快速访问该控件的常用编辑属性。

  • 支持的控件包括:

    • UWP:边框、按钮、画布、复选框、组合框、网格、超链接按钮、图像、列表框、列表视图、导航视图、单选按钮、滑块、堆叠面板、文本块、文本框
    • WPF:边框、按钮、画布、复选框、组合框、网格、图像、标签、列表框、列表视图、堆叠面板、文本块、文本框
  • 此功能适用于 UWP、WPF、.NET Core 和 WPF .NET Framework(需在选项对话框中启用“面向 .NET Framework 的新版 WPF XAML 设计器”预览功能)。

  • XAML 设计器快速操作还具有扩展模型。 如需详细了解如何创建自己的操作,请参阅 XAML 设计器扩展性 GitHub

一键启用的 XAML 设计器快速操作

适用于 XAML 的 MVVM 工具

在此版本中,我们在 XAML 编辑器中引入了一个灯泡来创建视图模型。 当检测到项目中正在使用 MVVM 框架时,这个灯泡出现在 XAML 文档的根元素上。 该对话框允许自定义生成的视图模型命名空间、文件夹和继承的基本视图模型。

创建视图模型灯泡体验

灯泡还将生成的视图模型设置为 XAML 文档的 x:DataType(Xamarin.Forms) 或 d:DataContext(所有其他平台),这使用户可以进一步利用 XAML 编辑器灯泡在视图模型中生成绑定属性和命令。

Service Fabric 工具

此功能在 Service Fabric 应用程序设计中引入了 StartupServices.xml 文件。 此文件承载 ApplicationManifest.xml 的 DefaultServices 节。 使用此实现时,DefaultServices 和服务定义相关的参数将从现有 ApplicationManifest.xml 移动到这个名为 StartupServices.xml 的新文件。 此文件用在 Visual Studio 的每个功能(生成/重新生成/F5/Ctrl+F5/发布)中。

此版本中已修复的主要问题

  • 修复了 C# 开发人员调用 Edit.SmartBreakline 命令将删除属性访问器中的所有内容的问题。
  • 修复了开发人员更新代码样式设置会将更改应用于所有 Visual Studio 实例,而不只是应用于所需文件夹内的问题。
  • 每当打开本机项目或合并项目时,“应用代码更改”图标就会显示。 只有在开发人员开始调试之后,才会启用此功能。
  • 修复了 AudioUnitPropertyIDType 中的中断性变更
  • 修复了使用 UWP 单元测试框架的开发人员无法在远程设备上运行测试的问题。

来自开发者社区

开发者社区有此版本中发布的所有项的完整列表。

以下是 16.10 中发布的得票最多的一些问题:


已知问题

通过以下链接查看 Visual Studio 2019 中所有待解决问题和可用暂避方法。


反馈和建议

我们期待你的宝贵意见和建议! 如有问题,请通过安装程序或 Visual Studio IDE 右上角的“报告问题”选项告知我们。 必须向 Feedback Icon 图标位于右上角。 可以在 Visual Studio 开发者社区中提出产品建议或跟踪问题,也可在其中提问、寻找答案和建议新功能。 此外,还可通过实时聊天支持获得免费安装帮助。


Blogs

通过参考开发人员工具博客网站中的见解和建议,随时掌握所有新版本的最新最全资讯,并发表有关大量功能的深入分析帖子。


Visual Studio 2019 发行说明历史记录

要详细了解 Visual Studio 2019 的历史版本,请查看 Visual Studio 2019 发行说明历史记录


返回页首