将应用部署到文件夹、IIS、Azure 或其他目标
通过部署应用程序、服务或组件,可以在其他计算机、设备、服务器或云中分发它进行安装。 在 Visual Studio 中为所需的部署类型选择适当的方法。
获取有关部署任务的帮助:
不确定选择哪个部署选项? 请参阅 哪些发布选项适合我?
有关 Azure 应用服务或 IIS 部署问题的帮助,请参阅 排查 Azure 应用服务和 IIS上的 ASP.NET Core 问题。
有关配置 .NET 部署设置的帮助,请参阅 配置 .NET 部署设置。
若要部署到新目标,如果之前创建了发布配置文件,请从之前配置的配置文件的“发布”屏幕中选择“新建”。 将显示“发布”工具。
然后,在 发布 工具中选择部署选项。 有关发布选项的信息,请参阅以下部分。
哪些发布选项适合我?
在 Visual Studio 中,可以直接将应用程序发布到以下目标:
创建新的发布配置文件时,将显示上述选项,如下图所示。
若要快速浏览更常见的应用程序部署选项,请参阅初探部署。
Azure
选择 Azure 时,可以在以下两者之间进行选择:
- 在 Windows、Linux 上运行或作为 Docker 映像运行的 Azure 应用服务
- 部署到 Azure 容器注册表的 Docker 映像
- Azure 虚拟机
Azure 容器应用
Azure 容器应用 可帮助开发人员创建和管理容器化 Web 应用程序和服务。
虽然可以将容器化应用部署到 Azure 应用服务,但 Azure 容器应用经过优化,以便更有效地对容器化应用使用资源,因此节省成本以及使用 Azure 容器应用的其他优势。
何时选择 Azure 容器应用
- 应用和服务在容器或多个容器中运行
- 需要高可用性和灵活的扩展性
- 你的应用非常适合微服务架构模式,其中功能分解为一组模块化的单任务服务,通常作为 Azure Functions实现。 例如,作为离散作业运行、响应事件或处理来自队列或触发器的请求的单任务服务集。
- 你希望容器业务流程(Kubernetes)的优势,但不想直接管理 Kubernetes。 (若要深入了解支持容器化服务的 Kubernetes 基础结构,请考虑使用 Azure Kubernetes 服务(AKS)。
Azure 应用服务
Azure 应用服务 可帮助开发人员快速创建可缩放的 Web 应用程序和服务,而无需维护基础结构。 应用服务在 Azure 中的云托管虚拟机上运行,但这些虚拟机是为你管理的。 应用服务中的每个应用都将分配唯一的 *.azurewebsites.net URL;除“免费”之外的所有定价层都允许向站点分配自定义域名。
可以通过为包含的应用服务选择 定价层或计划 来确定应用服务的计算能力。 可以有多个 Web 应用(和其他应用类型)共享相同的应用服务,而无需更改定价层。 例如,可以在同一应用服务上共同托管开发、过渡和生产 Web 应用。
何时选择 Azure 应用服务
- 你想要部署可通过 Internet 访问的 Web 应用程序。
- 你需要根据需要自动缩放 Web 应用程序,而无需重新部署。
- 你不想维护服务器基础结构(包括软件更新)。
- 在托管 Web 应用程序的服务器上不需要任何计算机级自定义。
如果要在自己的数据中心或其他本地计算机上使用 Azure 应用服务,可以使用 Azure Stack执行此操作。
有关发布到应用服务的详细信息,请参阅:
- 快速入门 - 发布到 Azure 应用服务
- 快速入门 - 将 ASP.NET Core 发布到 Linux。
- 将 ASP.NET Core 应用发布到 Azure 应用服务
- 排查 Azure 应用服务和 IIS上的 ASP.NET 核心问题。
Azure WebJobs
Azure WebJobs 通过应用服务得到支持。 请参阅使用 Visual Studio 开发和部署 WebJobs。
何时选择 Azure WebJobs
- 你有一个工作进程,一个可以在不与用户交互的情况下运行的计算。
- 任务是按需启动的,可以由事件触发或持续运行。
- 该作业在 Windows 或 Linux 上的 .NET Core 上运行(使用 Visual Studio 17.12 或更高版本)。
类似方案的另一个选项是 Azure Functions。 若要为你选择正确的选项,请参阅 在 Azure中选择正确的集成和自动化服务。
Azure 容器注册表
Azure 容器注册表 允许在专用注册表中生成、存储和管理 Docker 容器镜像和制品,以支持所有类型的容器部署。
何时选择 Azure 容器注册表
- 当您已经拥有一个用于进行开发和部署的 Docker 容器管道时。
- 想要在 Azure 中生成 Docker 容器映像时。
更多相关信息:
Azure 虚拟机
Azure 虚拟机(VM) 允许在云中创建和管理任意数量的计算资源。 通过承担 VM 上所有软件和更新的责任,您可以根据应用程序的需要自定义这些 VM。 此外,可以通过远程桌面直接访问虚拟机,只要需要,各服务器就会一直维持分配给它的 IP 地址。
缩放托管在虚拟机上的应用程序涉及根据需求启动额外的虚拟机,然后部署必要的软件。 利用这种额外的控制能力,可以在全球不同区域以不同方式进行缩放。 例如,如果应用程序正在为各种区域办事处的员工提供服务,则可以根据这些区域中的员工数量缩放 VM,从而可能降低成本。
有关更多信息,请参阅 Azure 应用服务、Azure 虚拟机以及可通过 Visual Studio 中的“自定义”选项设置为部署目标的其他 Azure 服务之间的详细比较。
何时选择 Azure 虚拟机
- 你想要部署可通过 Internet 访问的 Web 应用程序,并完全控制分配的 IP 地址的生存期。
- 需要在服务器上进行计算机级自定义,其中包括其他软件,例如专用数据库系统、特定的网络配置、磁盘分区等。
- 你需要对 Web 应用程序的缩放进行精细的控制。
- 出于任何其他原因,需要直接访问托管应用程序的服务器。
如果要在自己的数据中心或其他本地计算机上使用 Azure 虚拟机,可以使用 Azure Stack执行此操作。
Docker 容器注册表
如果应用程序使用的是 Docker,可以将容器化应用程序发布到 Docker 容器注册表。
何时选择 Docker 容器注册表
- 想要部署容器化应用程序
有关详细信息,请参阅以下内容:
开发测试实验室
如果要部署到 Azure 开发测试实验室,请使用发布工具中的文件夹部署选项。
有关完整步骤,请参阅 发布应用以在 Azure 开发测试实验室 VM进行测试。 在链接的文章中,文件夹发布步骤适用于 .NET Core/.NET 5+。 其余说明适用于 .NET 和 .NET Framework。 对于 .NET Framework ClickOnce 应用,可以使用 发布向导 发布到文件夹。
文件夹
部署到文件系统意味着将应用程序的文件复制到自己的计算机上的特定文件夹。 部署到文件夹最常用于测试目的,或者部署应用程序以供有限数量的用户使用(如果计算机也在运行服务器)。 如果目标文件夹在网络上共享,则部署到文件系统可以使 Web 应用程序文件可供可能部署到特定服务器的其他人使用。
从 Visual Studio 2019 16.8 开始,文件夹目标包括能够使用 ClickOnce 发布 .NET Windows 应用程序。
如果要使用 ClickOnce 发布 .NET Windows 桌面项目(.NET Core 3.1、.NET 5 及更高版本),请参阅 使用 ClickOnce部署 .NET Windows 应用程序。
运行服务器的任何本地计算机都可以通过 Internet 或 Intranet 提供应用程序,具体取决于应用程序的配置方式以及连接到的网络。 (如果确实将计算机直接连接到 Internet,请特别小心保护计算机免受外部安全威胁。由于管理这些计算机,因此可以完全控制软件和硬件配置。
如果出于任何原因(例如计算机访问),无法使用云服务(如 Azure 应用服务或 Azure 虚拟机),则可以在自己的数据中心内使用 Azure Stack。 借助 Azure Stack,可以通过 Azure 应用服务和 Azure 虚拟机管理和使用计算资源,同时在本地保留所有内容。
何时选择文件系统部署
只需将应用程序部署到文件共享,其他人将从其中将其部署到不同的服务器。
你想要使用 ClickOnce 部署 .NET Windows 应用程序
您只需要本地测试部署。
你想要在将应用程序文件发送到另一个部署目标之前单独检查和修改应用程序文件。
有关详细信息,请参阅 快速入门 - 部署到本地文件夹。
有关使用 ClickOnce 部署 .NET Windows 应用程序的详细信息,请参阅 使用 ClickOnce部署 .NET Windows 应用程序。
有关选择设置的其他帮助,请参阅以下内容:
FTP/FTPS 服务器
FTP/FTPS 服务器允许将应用程序部署到 Azure 以外的服务器。 它可以部署到你有权访问的文件系统或任何其他服务器(Internet 或 Intranet),包括其他云服务上的服务器。 它可以处理 Web 部署(文件或.ZIP)和 FTP。
如果选择 FTP/FTPS 服务器,Visual Studio 会提示输入配置文件名称,然后收集包括目标服务器或位置、站点名称和凭据在内的其他连接信息。 可以在 “设置” 选项卡上控制以下行为:
- 要部署的配置。
- 是否从目标中删除现有文件。
- 是否在发布期间预编译。
- 是否从部署中排除App_Data文件夹中的文件。
可以在 Visual Studio 中创建任意数量的 FTP/FTPS 部署配置文件,以便管理具有不同设置的配置文件。
何时选择 FTP/FTPS 服务器部署
- 在 Azure 以外的提供商上使用云服务,可以通过 URL 访问。
- 希望用来进行部署的凭据不是在 Visual Studio 中所用的凭据或直接与 Azure 帐户相关联的凭据。
- 每次部署时,都希望从目标中删除文件。
Web 服务器 (IIS)
IIS Web 服务器允许将应用程序部署到 Azure 以外的 Web 服务器。 它可以部署到你有权访问的 IIS 服务器(Internet 或 Intranet),包括其他云服务上的服务器。 它可以与 Web 部署或 Web 部署包配合使用。
如果选择 IIS Web 服务器,Visual Studio 会提示输入配置文件名称,然后收集包括目标服务器或位置、站点名称和凭据在内的其他连接信息。 可以在 “设置” 选项卡上控制以下行为:
- 要部署的配置。
- 是否从目标中删除现有文件。
- 是否在发布期间预编译。
- 是否从部署中排除App_Data文件夹中的文件。
可以在 Visual Studio 中创建任意数量的 IIS Web 服务器部署配置文件,以便使用不同的设置管理配置文件。
何时选择 Web 服务器 (IIS) 部署
- 你正在使用 IIS 发布可通过 URL 访问的站点或服务。
- 您希望使用不同于在 Visual Studio 中使用或直接绑定到您的 Azure 帐户的凭据进行部署。
- 每次部署时,都希望从目标中删除文件。
有关详细信息,请参阅快速入门 - 部署到网站。
有关在 IIS 上排查 ASP.NET Core 的帮助,请参阅 在 Azure 应用服务和 IIS上排查 ASP.NET Core 问题。
导入配置文件
在发布到 IIS 或 Azure 应用服务时,可以导入配置文件。 可以使用发布设置文件 (*.publishsettings) 配置部署。 发布设置文件由 IIS 或 Azure 应用服务创建,也可以手动创建,然后将其导入 Visual Studio。
使用发布设置文件可以简化部署配置,并在团队环境中更好地工作,而不是手动配置每个部署配置文件。
何时选择导入配置文件
- 你正在发布到 IIS 并想要简化部署配置。
- 你正在发布到 IIS 或 Azure 应用服务,并且想要加快部署配置,以便重复使用或将团队成员发布到同一服务。
有关详细信息,请参阅以下内容:
配置 .NET 部署设置
有关选择设置的其他帮助,请参阅以下内容:
后续步骤
教程:
- 使用发布工具部署 .NET Core 应用程序
- 将 ASP.NET 核心应用发布到 Azure
- Visual C++ 中的部署
- 部署 UWP 应用
- 使用 Web 部署 将 Node.js 应用发布到 Azure