今天我们很高兴与你分享一则消息:我们在Visual Studio 2022 17.4中为使用了CMake Presets的C++工程加入了开发容器(Dev Containers)支持。
容器是打包所有组件以运行应用程序的好方法。 通过 Dockerfile 捕获所有先决条件,以便在部署和运行容器的任何地方都有一致的运行时环境,Dev Containers 扩展了这个概念,以捕获在容器中开发和构建应用程序所需的一切。 一段时间以来,我们一直观察到容器在 C++ 社区中变得越来越流行,因为它提供了可重现的构建环境。
Visual Studio Code 已经支持 Dev Containers 有一段时间了。 从 Visual Studio 2022 17.4 开始,你现在也可以将开发容器用于你的 C++ 工程。
你需要在 Windows 上安装 Docker Desktop 才能使用此功能。 这是使用 C++ 工作负载进行 Linux 和嵌入式开发的一部分,因此请确保在你的安装中选择它。
>> 请移步至topomel查看图片 <<
我们为使用CMake Presets的工程启用了此功能。 你可以克隆此示例以开始使用。
>> 请移步至topomel查看图片 <<
此工程与Visual Studio中的 File New CMake Project 相同,但有一点不同。 还有一个额外的文件夹 .devcontainer 包含 Dockerfile 和 devcontainer.json,它们共同定义了要启动的开发容器。
在 Visual Studio 中打开此文件夹时,系统会提示你在容器中重新打开该文件夹。
>> 请移步至topomel查看图片 <<
在容器启动时首次使用时,会下载支持映像。 你可以在新的 Dev Containers 输出窗口中查看启动进度。
>> 请移步至topomel查看图片 <<
启动完成后,CMake 缓存生成开始,完成后你就可以正常编辑和调试了。
你还可以使用工具栏中的 Target System 下拉菜单在 Dev Container 和其他选项之间切换。
>> 请移步至topomel查看图片 <<
开发容器在工具选项下有几个选项。 最重要的是,你可以控制是否提示在容器中重新打开。 你还可以将远程主机设置为运行容器的位置,远程主机必须运行 docker 服务。
>> 请移步至topomel查看图片 <<
该功能底层上使用了Linux容器。我们不支持具有这种机制的 Windows 容器,因此这与使用 MSVC 的传统 Windows C++ 开发无关。旨在用于跨平台开发。
Visual Studio Code 的后端服务在 Dev Container 中运行,Visual Studio 并非如此。 Visual Studio 管理它在你工作时使用的开发容器的生命周期,但它以与其他 Linux 或 WSL 目标类似的方式将它们视为远程目标。 devcontainer.json 配置文件可能包含一些与 Visual Studio 无关的 VS Code 特定信息,例如所需的扩展。 Visual Studio 会忽略这些内容,因此预计任何一种环境都会使用通用的 Dev Container 定义。
不要在 Visual Studio 和 VS Code 中同时打开同一个文件夹。这将导致它们连接到同一个容器,这将导致在两个上下文中运行的 CMake 与同一个文件夹发生冲突。
万物皆周期,万物皆可容器化。
它(你来定义它是什么)是个框,啥都可以装。
Microsoft Visual C++团队的博客是我非常喜欢的博客之一,里面有很多关于Visual C++的知识和最新开发进展。大浪淘沙,如果你对Visual C++这门古老的技术还是那么感兴趣,则可以经常去他们那(或者我这)逛逛。
本文来自:《Dev Containers for C++ in Visual Studio》