练习 - 为独立部署进行发布

已完成

独立部署包括应用及其依赖项以及 .NET 运行时。 由于应用包含 .NET 运行时,因此目标计算机不需要安装 .NET 运行时才能运行应用。 这使得独立部署大于依赖于框架的部署。 独立应用还必须处理 .NET 运行时更新的部署,以接收最新修补程序。

IT 部门通知团队出于灾难恢复目的,他们在未安装 .NET 运行时的服务器上测试应用。 他们打算在 64 位 Windows 服务器和 64 位 Linux 服务器上测试应用。 若要支持此测试,需要针对每个环境将应用发布为独立部署。

本练习针对 Windows 和 Linux 将 ASP.NET Core 应用发布为独立部署。

发布为独立部署

  1. 在终端窗口中,导航到 MyWebApp 目录。 在上一练习结束时,你在 MyWebApp/publish-fd 中。 需要返回到 MyWebApp 目录。

    cd ..
    

    现在应位于 MyWebApp 目录中。

  2. 运行以下命令,针对 64 位 Windows 将应用发布为独立部署:

    dotnet publish -c Release -r win-x64 -o publish-scd-win64 --self-contained
    

    在上一个命令中:

    • -c Release 指定应用应在发布模式下生成。 这会优化应用的性能。
    • -r win-x64 指定该应用程序应发布为 64 位 Windows 版本。 win-x64 是 64 位 Windows 的运行时标识符 (RID),因此已针对 64 位 Windows 将应用发布为独立部署。
    • -o publish-scd-win64 指定已发布应用的输出目录。
    • --self-contained 指定将应用程序作为独立部署进行发布。

    此命令生成应用并将其作为适用于 64 位 Windows 的自包含部署发布到 MyWebApp/publish-scd-win64 目录。

  3. 查看资源管理器窗口中 MyWebApp/publish-scd-win64 目录的内容。

    此目录中的文件列表明显大于 publish-fd 目录中的文件列表。 这是因为除了 .NET 运行时外,独立部署还包括与依赖框架的部署相同的文件。 MyWebApp.exe 文件是应用的 64 位 Windows 可执行文件。

  4. 运行以下命令,针对 64 位 Linux 将应用发布为独立部署:

    dotnet publish -c Release -r linux-x64 -o publish-scd-linux64 --self-contained
    

    这一次,该 -r linux-x64 选项指定应为 64 位 Linux 发布应用。

  5. 查看资源管理器窗口中 MyWebApp/publish-scd-linux64 目录的内容。

    publish-scd-linux64 目录中的文件列表类似于 publish-scd-win64 目录中的文件列表,但可执行文件名为 MyWebApp,而不是 MyWebApp.exe。 这是因为 Linux 不使用文件扩展名来确定文件类型。 将应用部署到 Linux 服务器后,需要使用命令向 MyWebApp 文件 chmod +x 授予执行权限,然后才能运行。