6,062
社区成员
发帖
与我相关
我的任务
分享进入新的一年,现在是回顾 2023 年我们在工具中为 C++ 开发人员所做的所有功能和改进的好时机。我们在 Visual Studio、Visual Studio Code、我们的工具链和 vcpkg 方面取得了进步包管理器的性能和功能。一些特别关注的领域是 ARM64 支持、虚幻引擎开发、代码安全和跨平台开发。
| 跨平台 | |
| 生产率 | |
| 游戏开发 | |
| 建立洞察力 | 建立洞察力 |
| Visual Studio IDE 性能 | IDE性能 |
| 工具链 | |
| 氯苯酚 | 氯苯酚 |
| Visual Studio Code C++ 扩展 | |
| Visual Studio Code CMake 扩展 | |
| 会议演讲 | 会议演讲 |
跨平台开发是 Visual Studio 中的一等公民,并且已经存在很多年了。我们为那些针对 Linux、 Linux 的 Windows 子系统、嵌入式平台以及使用 CMake 进行构建的用户添加了许多新功能。
Linux 控制台输出出现在 Visual Studio 终端窗口中,图像
您现在可以从 CMake Targets 视图测试和构建多个 CMake Target。

使用CMake 调试器来调试 CMake 脚本,就像调试任何其他程序一样。您可以设置断点、查看当前执行点的 CMake 变量的值等等。

使用远程文件资源管理器查看远程系统上文件的目录树。

使用新的 STM32CubeIDE 项目 支持导入 STM32CubeIDE 项目。

使用“Install WSL for Me”从 Visual Studio 自动安装适用于 Linux 的 Windows 子系统。

远程 Linux 单元测试支持将远程 Linux 测试添加到测试资源管理器中。

我们希望您的开发尽可能快速且低摩擦。我们的生产力功能可以解决这个问题,为您提供更好的方法来完成日常任务。
粘性滚动通过将嵌套块的顶行粘贴到窗口顶部来为您提供编辑器中当前代码位置的上下文。
C++ 代码中使用的粘性滚动功能的动画。
大括号对着色使您可以通过将它们设置为相同的颜色来轻松查看匹配的大括号对。

新的拼写检查器可以查找并纠正代码中的拼写问题。

多合一搜索将代码搜索和特征搜索功能结合到一个工具中。

断点组可让您组织断点以使大型集合更易于管理。


使用正确的缩进进行复制粘贴可以更轻松地与他人准确地共享代码。

并行堆栈过滤允许您有选择地显示或隐藏特定线程或帧。


现在,您可以使用宏扩展可视化逐步查看宏扩展。
自动生成的计算机程序描述的屏幕截图,图像
您现在可以从 Visual Studio 创建 GitHub 拉取请求。

通过结构化诊断可视化复杂的分层编译器错误。

直接在编辑器中查看类型的大小和对齐方式。

使用我们新的内存布局可视化工具来查看类型将如何存储在内存中。
显示内存布局示例的 GIF,图像
使用#include 指令 cleanup优化您的 #includes 。
计算机屏幕的屏幕截图 描述已自动生成,图像
游戏开发是我们关注的一个关键领域,因为游戏开发人员通常有其他 C++ 开发人员没有的约束和工作流程。去年,我们特别关注虚幻引擎支持。
使用新的虚幻引擎蓝图参考和资产检查器导航您的虚幻引擎蓝图。

使用虚幻引擎日志查看器直接在 Visual Studio 中查看 UE 日志。


虚幻引擎宏格式化可确保自动格式化程序正确处理您的 UE 宏。

使用虚幻引擎命名约定检查器来确保您的代码符合预期。

使用虚幻引擎蓝图查找所有引用,通过单个命令查找所有 UE 蓝图引用。

虚幻引擎测试适配器将您的 UE 测试添加到测试资源管理器窗口。

使用虚幻引擎代码片段快速生成常见的 UE 特定代码。

虚幻引擎宏说明符建议为您提供 UE 宏的快速描述,而无需离开编辑器。

C++ Build Insights是一个工具集合,可收集有关 C++ 构建的数据并以可帮助您回答常见问题的格式呈现这些数据,例如:
去年,我们将Build Insights 集成到 Visual Studio 中,让您可以详细了解 #includes 如何影响您的构建:

然后,我们添加了一个函数视图,用于查看编译器处理特定函数所花费的时间:

除了代码的性能之外,我们还将继续致力于 Visual Studio 本身的性能。这儿是一些精彩片段。



我们的 C++ 工具链涵盖MSVC 编译器、开源 C++ 标准库实现和代码分析工具等组件。
为了符合 C 和 C++ 标准,我们添加了对 C11原子和线程的支持。我们还将C++20 支持扩展到 C++/CLI 项目。我们还提供了在 C++23 模式和 C++20 模式下可用的标准库模块(后者是跨供应商扩展)。
您可以查看STL 变更日志,了解我们在开源标准库方面取得的进展的完整详细信息。您还可以查看实时STL 状态图,了解我们在标准一致性方面的进展情况。截至撰写本文时,仅保留 8 个标准库功能来实现 C++23 一致性。感谢去年贡献功能的所有人!请继续在 GitHub 存储库上提交问题并创建拉取请求;这在很大程度上是一个社区项目。
我们还开源了 IFC SDK for C++ Modules,它提供了与 IFC 文件交互的接口。IFC 是一种磁盘上的二进制格式,它存储 C++ 源代码的表示形式以供机器使用。它旨在实现 C++ 模块,但也可用于需要 C++ 代码信息且不想集成完整 C++ 解析器的其他工具。Microsoft Office Word 代码库开始采用带有 MSVC 的标头单元,您可以在使用 MSVC 将 C++ 标头单元集成到 Office 中了解相关内容。
最后,我们为 C++20 Ranges 编写了大量文档。

我们一直致力于开发 MSVC 后端来改进代码生成,以便您的 C 和 C++ 代码运行得尽可能快。我们引入了针对 ARM64 的新优化(特别是 NEON 指令的自动矢量化器)以及有益于所有架构的优化(例如跨基本块和矢量化循环的优化)。我们还通过为命名类型转换引入新的内联控件(例如 std::move 和 std::forward)来提高调试构建性能。以下是一些博客文章,描述了我们在过去一年中所做的一些较大变化:
过去几年来,代码安全一直是我们团队的重点关注点之一。除了改进我们的 Address Sanitizer 支持和静态分析工具之外,我们还制定了一套关于如何构建可靠且安全的 C++ 程序的指南。这是美国政府出版物 NISTIR 8397:软件开发人员验证最低标准指南的逐节配套内容。
以下是有关我们所做的一些关键改进的博客文章:
vcpkg是我们针对 C 和 C++ 的免费跨平台包管理器。以下是我们去年取得的一些主要进展:
我们有针对C++、CMake、Makefiles和Embedded的官方 Visual Studio Code 扩展。我们还维护一个C/C++ 扩展包,其中收集了其中一些扩展以及其他有用的扩展。我们去年推出了许多新功能,其中大部分是为了响应 GitHub 上提交的问题,所以请继续发送您的反馈!
我们针对丢失的头文件引入了新的快速修复- 如果您的 C++ 代码中存在未知符号,并且 C/C++ 扩展在您的工作区中识别出正确的头文件,您现在将可以使用快速修复。
用户选择带下划线的变量,选择修复程序,然后选择插入标题。这会将标头添加到文件的顶部。
使用新的调用层次结构视图可以轻松导航您的代码库 - 特别是了解函数之间复杂的调用关系。这是我们 2023 年最受欢迎的功能,也是有史以来第三大最受欢迎的功能
该 gif 显示用户通过右键单击具有可用“快速修复”功能的函数,然后选择“显示调用层次结构”来导航到其调用层次结构。这将打开一个包含所有呼叫的侧栏。然后,用户单击侧栏菜单中的电话图标,即可在该功能的呼叫来源和呼叫之间进行切换。, 图片
您现在还可以自动将代码提取到函数中- 这是 2023 年第二大最受欢迎的功能,也是有史以来第十大最受欢迎的功能!
无需实验的图像提取方法
我们添加了一个新的、更简单的C++ 编译器获取过程。

现在,您可以使用“创建声明/定义”功能从函数声明自动生成函数定义,反之亦然。

您还可以将函数声明/定义复制到剪贴板,以自定义声明/定义在代码中的放置位置。到剪贴板。
当您创建声明/定义时,当您单击函数时,您将选择“复制声明”,而不是选择“创建声明”,反之亦然。
在对代码进行注释时,您现在可以在使用悬停工具提示时使用 Markdown 来格式化注释。

展望未来,我们将重点关注性能,因此请密切关注 2024 年的新功能,以便在 C/C++ 扩展中获得更快、更高效的体验!
我们为 CTest 添加了测试资源管理器,可让您查看测试的详细信息及其最新结果。
新的测试资源管理器正在运行,图片
我们添加了对vcpkg 端口文件调试的支持。


与 Visual Studio 一样,使用新的CMake 调试器来调试 CMake 脚本,就像调试任何其他程序一样。您可以设置断点、查看当前执行点的 CMake 变量的值等等。

我们今年的两个主要活动是CppCon和Pure Virtual C++。您可以阅读我们的CppCon 旅行报告,了解我们的想法。
以下是我们去年在许多会议上所有演讲的视频:
下面的评论可供我们跟踪任何请求。您还可以在 Twitter ( @VisualC ) 上或通过电子邮件 Visualcpp@microsoft.com找到我们。要打开 Visual Studio 的错误,请参阅 Visual Studio 反馈。要留下 VS Code 的反馈,请访问C++、CMake、Makefiles或嵌入式扩展的 GitHub 存储库。我们期待 C++ 的又一个一年!
作者 | Sy Brand
翻译 | RuiWang
出处 | 原文链接