此次发布的 Visual Studio 2019 版本 16.8 的新增功能摘要


F#:

  • F# 5 现在与 .NET 5 一起发布
  • 通过 F# 工具版本 11.0.0 对 Visual Studio 工具进行性能改进和修复
  • GitHub 上提供了完整发行说明

C++:

  • C++20 协同例程。
  • IntelliSense 现提供对 C++20 <concepts> 和 <ranges> 标头的支持,还支持重命名和浏览概念定义。
  • STL 现支持大多数 C++20 范围。
  • 有条件的平凡特殊成员函数。
  • C11 和 C17。
  • std::reverse_copy 的优化等等。
  • CMake 3.18。
  • 我们的代码分析工具现支持 SARIF 2.1 标准(即行业标准静态分析格式)。
  • 如果 Linux 项目中缺少生成工具,现将在工具栏中发出一个警告并在错误列表中明确描述缺少的工具。
  • 你现可直接通过 Visual Studio 在远程 Linux 系统或 WSL 上调试 Linux 核心转储。
  • 和 //!)。
  • vcpkg 公告
  • 在未求值的上下文中对 lambda 的编译器支持
  • 几个大型应用程序和 AAA 游戏的链接速度提高了 2 到 4 倍。
  • Visual Studio 调试器现支持 char8_t。
  • 支持使用 clang-cl 的 ARM64 项目。
  • Intel AMX 内部函数支持。

调试程序:

  • 对 .NET Core Linux 核心转储调试的支持
  • .NET 和 .NET Core 自动分析
  • .NET 和 .NET Core 内存热路径自动分析

实验性 Razor 编辑器更新:

  • Blazor 灯泡
  • C# 灯泡
  • 使 Razor 格式化得到增强
  • 从 .razor 文件中重命名标记中的 Razor 组件
  • Blazor 组件标签命名空间的“转到定义”功能
  • C# 悬停着色
  • C# 完成工具提示着色
  • Razor 的实用定义/实现,包括已关闭的文件
  • 在已关闭的 Razor 文件中“查找所有引用”
  • 针对大型项目和解决方案,改进了 Razor 编辑性能和稳定性

具有 SDK 样式项目的 Fakes:

  • 对 SDK 样式的项目使用新的 Fakes 支持时,一些用户在生成填充码时遇到以下问题

Git 效率:

  • 文档中的所有 Git 功能
  • 通过“Git 更改”窗口、“视图”菜单和状态栏,随时打开“Git 存储库”窗口
  • 在“Git 更改”窗口中从多个远程库提取、拉取和推送
  • 在“Git 存储库”窗口顶部查看 Git 命令的成功消息和错误消息
  • 基于 Azure DevOps 工作项创建一个新分支
  • 从 Git 菜单中的本地存储库列表打开 Git 存储库
  • 现在,默认源代码管理提供程序是 Git,而不是 TFVC
  • 单击可在“Git 存储库”窗口中的分支历史记录之间进行切换
  • 在 Live Share 会话中以来宾身份使用只读模式访问“新建 Git”窗口
  • 打开存储库后,在解决方案资源管理器中查看并选择解决方案列表
  • 通过“Git 存储库”窗口中的工具栏修改历史记录视图并搜索提交
  • 从分支历史记录图中的传入和传出提交部分提取、拉取和推送
  • 在将分支推送到远程位置后获得创建拉取请求的提示
  • 在分支列表上下文菜单中查看合并和变基命令中的分支名称
  • 通过解决方案资源管理器和编辑器中的上下文菜单访问 Git 命令
  • 通过新的模式对话,可查看克隆进度,并可选择将进程移到后台

IntelliCode:

  • 文档中获取个性化 IntelliCode 完成项
  • 文档的一部分进行共享

.NET 效率:

  • Roslyn 分析器现包含在 .NET 5.0 SDK 中
  • 出现抑制运算符时,引入与语法相匹配的新的 C# 9 not 模式的重构
  • 内联方法重构,有助于替换单个语句主体中的静态、实例和扩展方法的用法
  • 可将 typeof 的实例转换为 nameof(在 C# 中),将 GetType 的实例转换为 NameOf(在 Visual Basic 中)的代码修复
  • 对 C# 和 Visual Basic 的内联参数名称提示支持,可在函数调用中的每个参数之前插入对文本、强制转换文本和对象实例化的修饰
  • 将所选类中的成员提取到 C# 和 Visual Basic 中的新基类的重构
  • 代码清除包含新的配置选项,这些选项可将 EditorConfig 文件中设置的格式设置和文件头首选项应用于单个文件或整个解决方案
  • 可在不应通过引用传递参数时删除 in 关键字的代码修复
  • 引入新的 C#9 模式组合器和模式匹配建议(例如,转换 == 以使用 is(如果适用))的重构
  • 尝试在非抽象类中编写抽象方法时,可以将类变为抽象类的代码修复
  • 键入第一个引号时,自动显示 DateTime 和 TimeSpan 字符串文本中的 IntelliSense 完成项
  • 用于删除不必要的 pragma suppressions 和不必要的 SuppressMessageAttributes 的代码修复
  • Rename 和 Find All References 理解对全局 SuppressMessageAttributes 的目标字符串内符号的引用
  • ByVal 淡化表明并不需要它,并提供代码修复来删除 Visual Basic 中不必要的 ByVal
  • 对多个运行时(例如 .NET Framework 和 .NET Core)的交互式窗口支持。
  • 添加了新的 RegisterAdditionalFileAction API,分析器作者可通过它创建适用于其他文件的分析器。

Visual Studio 2019 IDE:

  • 使用帐户管理体验添加 GitHub 帐户
  • 编辑器团队正积极与遇到“在文件中查找”新式体验问题并在开发人员社区中留下反馈的人员合作解决问题。
  • ClickOnce 发布提供程序现可用于 .NET Core 3.1 和 .NET 5.0 Windows 桌面应用程序。

XAML 工具(WPF、UWP 和 Xamarin.Forms):

  • XAML 绑定失败诊断改进
  • XAML 热重载设置已移至“调试”>“热重载”
  • 来自未引用的 NuGet 包的工具箱填充

JavaScript/TypeScript:

  • 可以在“调试选项”菜单中启用新的调试体验
  • 甚至不需要选择任何文本 - TypeScript 现在足够智能,可以查找光标位置来获得最佳的可用重构!
  • 有关更多详细信息,请参阅 TypeScript 4.0 (发行说明)[https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-0.html ]
  • 我们建议将 tsconfig 添加到你的项目,以自定义使用的类型。
  • TypeScript 4.0 编译器和语言服务

安全顾问公告

CVE-2020-17100 Visual Studio 篡改漏洞

成功利用此漏洞的攻击者可在提升的上下文中运行进程。

此版本中解决的问题

  • 解决了这样一个问题,那就是使用 Intel C++ 编译器的 80 位长双精度型在 Visual Studio 2019 16.7 中编译会引发编译器错误,从而阻止生成项目。
  • 解决了 Live Unit Testing 在某些场景中拒绝启动的问题。
  • 向 Visual Studio 2019 v16.8 预览版 4 添加了 .NET 5.0.RC2
  • 修复了导致会开始临时 Git 操作且该操作永不完成的一个 bug。
  • 注册适用于 Visual Studio 的 GitHub Codespaces,尝试使用它。
  • 修复了一个 bug。当关闭或退出 ASP.NET Core 解决方案时,该 bug 导致 Visual Studio 2019 崩溃或停止响应。

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

C++

  • 在 <experimental/coroutine> 和 /await 开关中提供对旧行为的支持。
  • 已知问题。
  • GitHub 上关于范围的问题上跟踪我们的进度。
  • 有条件的平凡特殊成员函数。
  • C11 和 C17。
  • 更改日志中找到各项更新。
  • CMake 3.18。
  • 官方规范中详细了解 SARIF 格式。
  • 如果 Linux 项目中缺少生成工具,现将在工具栏中发出一个警告并在错误列表中明确描述缺少的工具。
  • 你现可直接通过 Visual Studio 在远程 Linux 系统或 WSL 上调试 Linux 核心转储。
  • 和 //!)。
  • vcpkg 公告
  • 未计算上下文中的 lambda 的编译器支持,让你可以在 decltype 说明符中使用 lambda。
  • 通过“工具”->“选项”->“文本编辑器”->“C/C++”->“代码样式”->“Linter + 修复”。
.net5 正式发布,一个有纪念性的日子键入时 linter

调试器

对 .NET Core Linux 核心转储调试的支持

庆幸地是,借助 Visual Studio 2019 16.8 预览版 3,你只需将托管 Linux 核心转储直接拖放到 IDE 中就可立即开始调试。

.NET 自动分析

我们引入了托管内存转储分析器,它可帮助识别以下方案和反模式:

  • Sync-over-Async
  • 线程池耗尽

.NET 和 .NET Core 内存热路径自动分析

这使得客户可使用“诊断内存工具”窗口中的 Flame 注释直观查看其内存堆中主要的对象类型。

造成 SDK 样式的项目在生成填充码时出现问题的 Fakes

对 SDK 样式的项目使用新的 Microsoft Fakes 支持时,一些用户在生成填充码时遇到以下问题。

Cannot generate shim for System.DateTime: type is not supported because of internal limitations

如果你使用的是 16.7.* 版本,则可使用以下暂时解决方法:

  1. 将 <FakesUseV2Generation>False</FakesUseV2Generation> 添加到 csproj 文件中的 PropertyGroup。
  2. 在 ProjectDir/FakesAssemblies 中添加对生成的 Fakes 程序集的引用。

开发者社区反馈获取其他更新。

实验性 Razor 编辑器更新

新的实验性 Razor 编辑器现在支持以下 Razor 编辑功能:

  • Blazor 灯泡:
    • 提取到代码后置*:
    • 根据标记创建组件*
    • 为组件添加 @using 指令
    • 完全限定组件标记名称
  • C# 灯泡
    • 添加 @using 指令
    • 完全限定类型名称
  • 使 Razor 格式化得到增强
  • 从 .razor 文件中重命名标记中的 Razor 组件
  • Blazor 组件标签名称的“转到定义”功能
  • C# 悬停着色
  • C# 完成工具提示着色
  • 在已关闭的 Razor 文件中“查找所有引用”
  • 针对大型项目和解决方案,改进了 Razor 编辑性能和稳定性

* 仅适用于本地 Razor 方案,Codespaces 或 Live Share 中尚不支持该功能。

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

Visual Studio 2019 IDE

  • 版本控制、集成终端和其他功能随后将能够使用你的帐户凭据来满足其 GitHub 身份验证需求。
.net5 正式发布,一个有纪念性的日子在 Visual Studio 中添加 GitHub 帐户
  • 可以在文件夹类别下找到 ClickOnce。
.net5 正式发布,一个有纪念性的日子Visual Studio 中的 ClickOnce 发布提供程序

Git 效率

  • 基于 Azure DevOps 工作项创建一个新分支

    .net5 正式发布,一个有纪念性的日子
  • 从 Git 菜单中的本地存储库列表打开 Git 存储库

.net5 正式发布,一个有纪念性的日子Git 菜单中的本地存储库列表
  • 默认源代码管理提供程序现在是 Git 而不是 TFVC;你可通过“工具”-“选项”-“源代码管理”进行更改

  • 单击可在“Git 存储库”窗口中的分支历史记录之间进行切换

  • 在 Live Share 会话中以来宾身份使用只读模式访问“新建 Git”窗口

  • 打开存储库后,在解决方案资源管理器中查看并选择存储库中的解决方案列表

    .net5 正式发布,一个有纪念性的日子
.net5 正式发布,一个有纪念性的日子解决方案资源管理器中的“视图”列表

.NET 效率

  • 接下来,请选择“代码分析”选项卡;在这里,你可选择或清除“启用 .NET 分析器”复选框 。
.net5 正式发布,一个有纪念性的日子用于启用 .NET 分析器的“项目属性”窗口
  • 选择“使用模式匹配”。
.net5 正式发布,一个有纪念性的日子引入与语法匹配的 C# 9 not 模式的重构
  • 接下来,选择以下选项之一:

选择“内联 <QualifiedMethodName>”,删除内联方法声明:

.net5 正式发布,一个有纪念性的日子

相关文章: