MVC 08 - 发布.mp4 (66.39MB)

部署

两种形式:

  • Framework-Dependent(FDD 框架依赖)
    • 服务器上必须安装 .NET Core,部署时只需发布项目生成的文件
  • Self-Contained(SCD 独立)
    • 服务器无需预安装 .NET Core,部署时 .NET Core 随项目生成的文件一同发布

      FDD

      | 优势: | 劣势 | | —- | —- | |
      - 无需配置目标系统
      - 部署文件小
      - .NET Core 被共享使用
      |
      - 必须预装 .NET Core
      - 可能存在兼容性问题
      |

SCD

优势: 劣势

- 对 Web 应用使用的 .NET Core 版本拥有独立控制权
- 可以完全确定 Web 应用可以在目标系统运行
- 不同应用不会有兼容性问题

- 需预先配置好目标系统
- 部署文件比较大

Runtime Store

  • 类似 GAC
  • NuGet 包的集中存放地点
  • Store 里已存在的包就无需与应用一起部署了
  • 已经安装了 ASP.NET Core meta pacakage
  • Ngen
  • 可以添加你自己的库,需要使用 manifests

.NET Core 在应用刚运行时进行编译(Just-In-Time Compilation),这使得第一次运行应用时比较慢。Runtime Store 里面的东西都预先被 Ngen 处理好了(预先 JIT),以加速应用的第一次运行。

注:因为 Runtime Store 的存在,你和老杨发布的项目文件中的 dll 很可能有差异。

SCD 发布

  • 包含 .NET Core 和运行时
  • 无需预先安装
  • 提供启动程序的方式
  • 需要知道 RID(Runtime IDentifier)
    • RID 举列:linux-x64, ubuntu.14.04-x64, win7-x64, 和 osx.10.12-x64
  • RID 在项目文件中使用 RuntimeIdentifiers 标签添加

SCD 发布流程

  1. 右键项目编辑 csproj
  2. 添加 RuntimeIdentifiers 标签

    1. <PropertyGroup>
    2. <TargetFramework>netcoreapp2.1</TargetFramework>
    3. <RuntimeIdentifiers>win10-x64;ubuntu.16.04-x64</RuntimeIdentifiers>
    4. </PropertyGroup>
  3. 新建发布配置,并设置一个不冲突的发布位置

  4. 选择 SCD 发布
  5. 目标运行时中选择刚才添加的运行时

    image.png

  6. 双击 CoreDemo.exe 运行项目

FDD 的发布的文件只有 5MB 多,SCD 发布的文件足有 90MB。