为了使调试功能在容器中正常工作,Visual Studio 使用卷映射,将主机上的调试器和 NuGet 文件夹进行映射。 有关卷映射,可参阅此处的 Docker 文档。 可以使用 Visual Studio 中的“容器”窗口查看容器的卷映射。
先决条件
- Docker Desktop 或 Podman Desktop。
- Visual Studio,或者要支持 Podman,需安装有ASP.NET 和 Web 开发、Azure 开发和/或.NET 桌面开发工作负载的 Visual Studio 2026。
- Docker Desktop。
- 安装了 ASP.NET 和 Web 开发、Azure 开发工作负载和/或 .NET 桌面开发工作负载的 Visual Studio。
Visual Studio 容器映像中的卷装载
下面是在容器中装载的卷。 容器中看到的内容可能因使用的 Visual Studio 的次要版本而异。
| 音量 | 描述 |
|---|---|
| 应用文件夹 | 包含 Dockerfile 所在的项目文件夹。 |
| NuGet 包文件夹 | 包含从项目的 obj{project}.csproj.nuget.g.props 文件中读取的 NuGet 包和 fallback 文件夹。 |
| 远程调试器 | 包含根据项目类型在容器中调试程序所需的组件。 有关详细信息,请参阅 自定义容器映像以调试。 |
| 源文件夹 | 包含传递给 Docker 命令的生成上下文。 |
| VSTools | 包含可支持使用容器的 Visual Studio 工具,包括支持调试器、容器窗口、处理 Azure 令牌、热重载代理和无发行版帮助程序。 |
对于 .NET 8,也可能存在其他包含用户机密和 HTTPS 证书的装载点,它们可能位于根位置,也可能用于应用用户。
说明
如果在没有 Docker Desktop 的 Windows 子系统中使用 Docker 引擎(WSL),请将环境变量 VSCT_WslDaemon=1 设置为使 Visual Studio 在创建卷挂载时使用 WSL 路径。 还需要 NuGet 包 Microsoft.VisualStudio.Azure.Containers.Tools.Targets 1.20.0-Preview 1。
下面是在容器中装载的卷。 容器中看到的内容可能因使用的 Visual Studio 2022 的次要版本而异。
| 音量 | 描述 |
|---|---|
| 应用文件夹 | 包含 Dockerfile 所在的项目文件夹。 |
| NuGet 包文件夹 | 包含从项目的 obj{project}.csproj.nuget.g.props 文件中读取的 NuGet 包和 fallback 文件夹。 |
| 远程调试器 | 包含根据项目类型在容器中调试程序所需的组件。 有关详细信息,请参阅 自定义容器映像以调试。 |
| 源文件夹 | 包含传递给 Docker 命令的生成上下文。 |
| VSTools | 包含可支持使用容器的 Visual Studio 工具,包括支持调试器、容器窗口、处理 Azure 令牌、热重载代理和无发行版帮助程序。 |
对于 .NET 8,也可能存在其他包含用户机密和 HTTPS 证书的装载点,它们可能位于根位置,也可能用于应用用户。
说明
Visual Studio 17.10 及更高版本 如果在没有 Docker Desktop 的情况下,在 Windows 子系统 Linux(WSL)中使用 Docker 引擎,请设置环境变量 VSCT_WslDaemon=1,以便 Visual Studio 在创建卷挂载时使用 WSL 路径。 还需要 NuGet 包 Microsoft.VisualStudio.Azure.Containers.Tools.Targets 1.20.0-Preview 1。
对于 ASP.NET Core Web 应用程序,可能会有两个用于 SSL 证书和用户密钥的附加文件夹,相关详细信息请参阅 在容器化 ASP.NET Core 应用程序中使用 SSL。
装载容器卷
可以使用 docker run 命令行参数装载另一个卷。
打开容器化项目的项目文件。
若要指定新的命令行参数,请添加 MSBuild 属性
DockerfileRunArguments,并提供-v或--mount语法。 例如,以下语法创建卷myvolume并将其装载到文件夹/scratch中的容器中。<PropertyGroup> <DockerfileRunArguments>-v myvolume:/scratch</DockerfileRunArguments> </PropertyGroup>有关 -v 或 --mount 选项的命令行语法,请参阅 Docker 文档。
可以通过为容器运行时、 docker.exe 或 podman.exe指定命令行参数来装载另一个卷。
打开容器化项目的 launchSettings.json 。
若要指定新的命令行参数,请添加 JSON
containerRunArguments并提供-v或--mount语法。 例如,以下语法创建卷myvolume并将其装载到文件夹/scratch中的容器中。"containerRunArguments": "-v myvolume:/scratch"请参阅容器运行时提供程序的文档,了解 Docker -v 或 --mount 选项的命令行语法,或者 Podman -v 选项 和 Podman --mount 选项。