在 ASP.NET Core 项目中 属性 文件夹中,可以找到 launchSettings.json 文件,该文件包含用于控制 Web 应用在开发计算机上启动方式的设置。 有关如何在 ASP.NET 开发中使用此文件的详细信息,请参阅 在 ASP.NET Core中使用多个环境。
可以直接编辑此文件,但在 Visual Studio IDE 中,还可以通过 UI 编辑此文件中的属性。 选择启动选项旁的下拉列表(例如,Docker 或 .NET SDK),然后选择单容器项目的“调试属性”。
对于 Docker Compose,请选择 管理 Docker Compose 启动设置,并查看 启动撰写服务子集。
在 launchSettings.json中,Docker 部分中的设置与 Visual Studio 如何处理容器化应用相关。
"Docker": {
"commandName": "Docker",
"launchBrowser": true,
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
"DockerfileRunArguments": "-l mylabel=value",
"environmentVariables": {
"ASPNETCORE_URLS": "https://+:443;http://+:80",
"ASPNETCORE_HTTPS_PORT": "44360"
},
"httpPort": 51803,
"useSSL": true,
"sslPort": 44360
}
"Docker (Dockerfile)": {
"commandName": "Docker",
"launchBrowser": true,
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
"environmentVariables": {
"ASPNETCORE_HTTPS_PORTS": "8081",
"ASPNETCORE_HTTP_PORTS": "8080"
},
"publishAllPorts": true,
"useSSL": true
}
还可以使用,如果想要使用 "Container (Dockerfile)"Podman,这更准确,尽管 "Docker (Dockerfile)" 适用于 Docker 和 Podman 容器运行时。
commandName 设置标识此部分适用于容器工具。
无论使用的是 Dockerfile,还是使用 .NET SDK 的内置容器生成支持(适用于 .NET 7 及更高版本),launchSettings.json 中的大多数设置都可用且适用。
下表显示了可在本节中设置的属性:
| 设置名称 | 例 | 描述 |
|---|---|---|
| commandLineArgs | "commandLineArgs": "--mysetting myvalue" |
在容器中启动项目时,将使用这些命令行参数来启动应用。 |
| DockerfileRunArguments | "dockerfileRunArguments": "-l mylabel=value" |
要传递给 docker run 命令的其他参数。 |
| 环境变量 |
"environmentVariables":
{
"ASPNETCORE_URLS": "https://+:443;http://+:80"``, <br/> “ASPNETCORE_HTTPS_PORT”: “44381”''} |
在容器中启动时,这些环境变量值将传递给进程。 |
| httpPort 端口 | "httpPort": 24051 |
启动容器时,主机上的此端口将映射到容器的端口 80。 |
| launchBrowser | "launchBrowser": true |
指示成功启动项目后是否启动浏览器。 |
| launchBrowserTimeout | "launchBrowserTimeout": 1 |
在启动浏览器之前等待应用准备就绪的最长时间(以秒为单位)。 |
| launchUrl | "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}" |
启动浏览器时会使用此 URL。 此字符串支持的替换令牌包括: - {Scheme} - 根据是否使用 SSL,替换为 http 或 https。 - {ServiceHost} - 通常替换为 localhost。 不过,当你面向 Windows 10 RS3 或更早版本的 Windows 容器时,它将替换为容器的 IP。 - {ServicePort} - 通常替换为 sslPort 或 httpPort,具体取决于是否使用 SSL。 不过,当你面向 Windows 10 RS3 或更早版本的 Windows 容器时,它将替换为 443 或 80,具体取决于是否使用 SSL。 |
| sslPort | "sslPort": 44381 |
启动容器时,主机上的此端口将映射到容器的端口 443。 |
| useSSL | "useSSL": true |
指示在启动项目时是否使用 SSL。 如果未指定 useSSL,则在 sslPort > 0时使用 SSL。 |
注意
如果在项目文件和启动设置文件中找到相同的设置(例如 DockerfileRunArguments),则启动设置文件中的值优先。
| 调试配置文件 UI 中的属性 | 在 launchSettings.json 中设置名称 | 例 | 描述 |
|---|---|---|---|
| 命令行参数 | commandLineArgs | "commandLineArgs": "--mysetting myvalue" |
在容器中启动项目时,将使用这些命令行参数来启动应用。 |
| 容器运行参数 | containerRunArguments ContainerRunArguments |
"containerRunArguments": "-l mylabel=value" |
要传递给 docker run 命令的其他参数。 (在 Visual Studio 17.12 及更高版本中使用小写版本。Visual Studio 17.9 中引入了大写版本,用于向后兼容。 可以使用以下替换令牌: - {ProjectDir} - 项目目录的完整路径。 - {OutDir} - MSBuild 属性 OutDir 的值。 |
| 无 | DockerfileRunArguments | dockerfileRunArguments": "-l mylabel=value" |
与 containerRunArguments一样,但仅适用于使用 Dockerfile 生成类型的项目。 对于 Visual Studio 17.12 及更高版本,建议改用 containerRunArguments。 |
| 环境变量 | 环境变量 |
"environmentVariables": {"ASPNETCORE_URLS": "https://+:443;http://+:80","ASPNETCORE_HTTPS_PORT": "44381" } |
在容器中启动时,这些环境变量值将传递给进程。 |
| 容器名称 | 容器名称 | mycontainer |
(17.12 及更高版本)与正则表达式 [a-zA-Z0-9][a-zA-Z0-9_.-]匹配的容器的名称。 |
| 容器环境文件 | containerRunEnvironmentFiles | "containerRunEnvironmentFiles": "abc.env;xyz.env" |
(17.12 及更高版本)环境变量文件(.env 文件)的列表,用分号分隔。 请参阅 .env 文件语法。 |
| HTTP 端口 | httpPort 端口 | "httpPort": 24051 |
启动容器时,主机上的此端口将映射到容器的端口 80。 |
| 启动浏览器 | launchBrowser | "launchBrowser": true |
指示成功启动项目后是否启动浏览器。 |
| 无 | launchBrowserTimeout | "launchBrowserTimeout": 1 |
在启动浏览器(仅 Docker Compose)之前等待应用准备就绪的最长时间(以秒为单位)。 |
| URL | launchUrl | "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}" |
启动浏览器时会使用此 URL。 此字符串支持的替换令牌包括: - {Scheme} - 根据是否使用 SSL,替换为 http 或 https。 - {ServiceHost} - 通常替换为 localhost。 不过,当你面向 Windows 10 RS3 或更早版本的 Windows 容器时,它将替换为容器的 IP。 - {ServicePort} - 通常替换为 sslPort 或 httpPort,具体取决于是否使用 SSL。 不过,当你面向 Windows 10 RS3 或更早版本的 Windows 容器时,它将替换为 443 或 80,具体取决于是否使用 SSL。 |
| 发布所有端口 | publishAllPorts | "publishAllPorts": true |
如果为 true,请将 -P 传递给 docker run,这会将所有公开的端口发布到随机端口。 请参阅 Docker 文档。 但是,指定 sslPort时,Visual Studio 仍会传递 -p 5002:443,因此服务仍应侦听端口 5002。 |
| SSL 端口 | sslPort | "sslPort": 44381 |
启动容器时,主机上的此端口将映射到容器的端口 443。 |
| 无 | useSSL | "useSSL": true |
指示在启动项目时是否使用 SSL。 如果未指定 useSSL,则在 sslPort > 0时使用 SSL。 |
并非所有设置都在 UI 中可用,例如,useSSL。 若要更改这些设置,请直接编辑 launchSettings.json。
DockerfileRunArguments此设置在 Visual Studio 2022 17.12 及更高版本中containerRunArguments被取代,可在“启动配置文件”UI 中将其设置为Container run arguments。
注意
如果在项目文件和启动设置文件中找到相同的设置,则启动设置文件中的值优先。
| 调试配置文件 UI 中的属性 | 在 launchSettings.json 中设置名称 | 例 | 描述 |
|---|---|---|---|
| 命令行参数 | commandLineArgs | "commandLineArgs": "--mysetting myvalue" |
在容器中启动项目时,将使用这些命令行参数来启动应用。 |
| 容器运行参数 | containerRunArguments ContainerRunArguments |
"containerRunArguments": "-l mylabel=value" |
要传递给 docker run 或 podman run 命令的其他参数。 (在 Visual Studio 17.12 及更高版本中使用小写版本。Visual Studio 17.9 中引入了大写版本,用于向后兼容。 可以使用以下替换令牌: - {ProjectDir} - 项目目录的完整路径。 - {OutDir} - MSBuild 属性 OutDir 的值。 |
| 无 | DockerfileRunArguments | "dockerfileRunArguments": "-l mylabel=value" |
与 containerRunArguments一样,但仅适用于使用 Dockerfile 生成类型的项目。 建议改用 containerRunArguments 。 |
| 环境变量 | 环境变量 |
"environmentVariables": {"ASPNETCORE_URLS": "https://+:443;http://+:80","ASPNETCORE_HTTPS_PORT": "44381" } |
在容器中启动时,这些环境变量值将传递给进程。 |
| 可执行路径 | executablePath |
"executablePath": "myprogram.exe" |
调试时,将指示调试器启动此可执行文件。 |
| 容器名称 | 容器名称 | mycontainer |
(17.12 及更高版本)与正则表达式 [a-zA-Z0-9][a-zA-Z0-9_.-]匹配的容器的名称。 |
| 容器环境文件 | containerRunEnvironmentFiles | "containerRunEnvironmentFiles": "abc.env;xyz.env" |
(17.12 及更高版本)环境变量文件(.env 文件)的列表,用分号分隔。 请参阅 .env 文件语法。 |
| HTTP 端口 | httpPort 端口 | "httpPort": 24051 |
启动容器时,主机上的此端口将映射到容器的 HTTP 端口。 使用容器端口 80,除非使用环境变量 ASPNETCORE_URLS 和 ASPNETCORE_HTTP_PORTS. |
| 启动浏览器 | launchBrowser | "launchBrowser": true |
指示成功启动项目后是否启动浏览器。 |
| 无 | launchBrowserTimeout | "launchBrowserTimeout": 1 |
在启动浏览器(仅 Docker Compose)之前等待应用准备就绪的最长时间(以秒为单位)。 |
| URL | launchUrl | "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}" |
启动浏览器时会使用此 URL。 此字符串支持的替换令牌包括: - {Scheme} - 根据是否使用 SSL,替换为 http 或 https。 - {ServiceHost} - 通常替换为 localhost。 不过,当你面向 Windows 10 RS3 或更早版本的 Windows 容器时,它将替换为容器的 IP。 - {ServicePort} - 通常替换为 sslPort 或 httpPort,具体取决于是否使用 SSL。 不过,当你面向 Windows 10 RS3 或更早版本的 Windows 容器时,它将替换为环境变量 ASPNETCORE_URLSASPNETCORE_HTTP_PORTS指定的 HTTP 或 HTTPS 端口,或者对于 HTTPS,如果未设置,则将其替换为 HTTP 或 HTTPS 的 HTTP 或 HTTPS 端口 80。 |
| 发布所有端口 | publishAllPorts | "publishAllPorts": true |
如果为 true,请将 -P 传递给 docker run,这会将所有公开的端口发布到随机端口。 请参阅 Docker 文档。 但是,指定 sslPort时,Visual Studio 仍会传递 -p 5002:443,因此服务仍应侦听端口 5002。 |
| SSL 端口 | sslPort | "sslPort": 44381 |
启动容器时,主机上的此端口将映射到容器的 HTTPS 端口。 使用容器端口 443,除非使用环境变量 ASPNETCORE_URLS 和 ASPNETCORE_HTTP_PORTS. |
| 无 | useSSL | "useSSL": true |
指示在启动项目时是否使用 SSL。 如果未指定 useSSL,则在 sslPort > 0时使用 SSL。 |
| 工作目录 | workingDirectory | "workingDirectory": "c:\path\to\folder" |
调试时,将指示调试器将此路径用作工作目录。 |
并非所有设置都在 UI 中可用,例如,useSSL。 若要更改这些设置,请直接编辑 launchSettings.json。
可以在“启动配置文件”UI 中将设置 containerRunArguments 为 Container run arguments。 它等效于过时的 MSBuild 属性 DockerfileRunArguments。
注意
如果在项目文件和启动设置文件中找到相同的设置,则启动设置文件中的值优先。
后续步骤
通过设置 容器工具生成属性来配置项目。
另请参阅
- Docker Compose 生成属性
- 管理 Docker Compose 的启动配置文件