将应用部署到文件夹、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 DevTest Labs 虚拟机进行测试。 在链接的文章中,文件夹发布步骤适用于 .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 部署设置
有关选择设置的更多帮助,请参阅以下内容:
后续步骤
教程: