Visual Studio 2026 中 C++ 开发者的新功能(18.7 – 18.10)
内容提要
Visual Studio 2026 的 18.7 至 18.10 版本为 C++ 开发者带来多项更新:GitHub Copilot 现代化代理正式发布,可协助升级 MSVC 项目;新增原生 NuGet PackageReference 支持、跨安装发现固定 MSVC 工具集版本;全代码库索引加速代码导航;Git 支持工作树与子模块;调试器可附加 Podman 容器并支持测试驱动排查;Copilot 还支持组织级指令、自选模型与自带密钥。
延伸解读
Copilot 升级代理:两种模式与使用前提
GitHub Copilot 现代化代理已正式发布,可帮助将 MSBuild 和 CMake 项目升级到新版 MSVC 生成工具。它提供自动和引导两种模式:自动模式较少干预,引导模式在阶段间暂停以便审查。使用前需通过 Visual Studio 安装程序选择该可选组件,并拥有 GitHub Copilot 订阅。代理专注于 MSVC 升级引发的问题,用户可随时停止、调整或恢复。
原生 NuGet PackageReference:适用场景与限制
Visual Studio 2026 为原生 .vcxproj 项目引入实验性 NuGet PackageReference 支持,包引用直接写入项目文件,支持传递依赖解析和全局包缓存。该功能默认关闭,需设置 EnableNativePackageReferenceSupport 属性启用。官方仍推荐使用 vcpkg 管理 C/C++ 库,但 PackageReference 适合 NuGet 分发的 SDK、内部源以及需要与 .NET 项目统一分发流程的仓库。目前不支持面向 .NET Framework 的 C+
固定 MSVC 工具集版本:跨安装发现的价值
新版本允许 Visual Studio 在其他 Visual Studio 或独立 Build Tools 安装中查找精确固定的 MSVC 生成工具版本(主版本.次版本.补丁版本)。此前仅当当前安装完全没有目标平台工具集时才会搜索其他安装,现在通过 EnableVCToolsVersionDiscovery 和 VCToolsVersion 属性可主动启用。这有助于团队独立更新 IDE 的同时保留已知良好的编译器版本,实现可复现的本地和 CI 构建。
全代码库索引:加速导航但需权衡成本
全代码库索引是预览功能,向 C++ 浏览数据库添加更丰富的符号使用信息,供 IntelliSense 引擎复用,从而改进语义着色、转到定义和查找所有引用,并让 Copilot 的 find_symbol 工具更快访问这些功能。微软使用 Bullet3 和 LLVM 测试时,许多导航和着色场景提升 2 倍或更多,但结果和索引成本因代码库而异。可在工具 > 选项 > 语言 > C/C++ > IntelliSense > 浏览/导航中启用。
Q&A
Visual Studio 2026 18.7 到 18.10 版本为 C++ 开发者带来了哪些主要新功能?
主要新功能包括:GitHub Copilot 现代化代理正式发布,可协助升级 MSVC 项目;原生 NuGet PackageReference 支持;跨安装发现固定 MSVC 工具集版本;全代码库索引加速代码导航;Git 支持工作树与子模块;调试器可附加 Podman 容器并支持测试驱动排查;Copilot 支持组织级指令、自选模型与自带密钥。
如何使用 GitHub Copilot 现代化代理升级 MSVC 项目?
首先通过 Visual Studio Installer 选择 GitHub Copilot 现代化可选组件,并确保有 GitHub Copilot 订阅和 MSBuild 或 CMake C++ 项目。然后在解决方案资源管理器中右键单击解决方案或项目,选择“现代化”,或在 GitHub Copilot Chat 中输入 @Modernize。代理有两种模式:自动模式较少干预,引导模式在各阶段暂停供审查。
Visual Studio 2026 中 C++ 项目如何使用 NuGet PackageReference?
在项目或 Directory.Build.props 中设置 <EnableNativePackageReferenceSupport>true</EnableNativePackageReferenceSupport> 启用实验性支持。然后可直接编辑项目文件添加 <PackageReference Include="包名" Version="版本" />,或使用 Visual Studio 的“管理 NuGet 包”。该功能支持传递依赖解析和全局包缓存,但默认关闭,且对 C++/CLI 项目等有限制。
全代码库索引如何提升 C++ 代码导航速度?
全代码库索引通过向 C++ 浏览数据库添加更丰富的符号使用信息,复用已索引的语义数据,从而加速 IntelliSense 引擎的功能,如语义着色、转到定义和查找所有引用。它还能让 Copilot 的 find_symbol 工具更快访问这些功能,并启用 C++ 的 CodeLens 引用。在 Bullet3 和 LLVM 测试中,许多导航和着色场景提升 2 倍以上。
Visual Studio 2026 的 Git 工作树和子模块功能怎么用?
工作树:在 Git 仓库窗口中右键单击分支,选择“从...新建工作树”,可从现有分支、新分支或提交创建,并在当前或新窗口打开。子模块:Git 仓库窗口有专用子模块部分,可添加、更新、删除、发现和导航子模块,默认只读。要编辑子模块,需在工具 > 选项 > 源代码管理 > Git 中启用“自动激活多个仓库”并选择“是,包括子模块”。
如何将 Visual Studio 调试器附加到 Podman 容器中的 C++ 进程?
启动容器后,打开“调试”>“附加到进程”,选择连接类型为 Podman,单击“查找”,然后选择要调试的进程。该体验支持 .NET 和 C++ 容器,无需额外调试器配置。
Visual Studio 2026 中 Copilot 的“自带模型”功能支持哪些提供商?
自带模型(BYOM)支持 Microsoft Foundry、OpenAI、Anthropic 和 Ollama,包括 OpenAI 和 Ollama 的自定义终结点。该功能为预览版,无论是否登录 GitHub 均可使用。