2019-05-30 | UNLOCK

dotnetCore使用Cli发布应用

先聊几句闲话吧,前几天用uniapp写的项目居然没过审核,alpharacks炸掉的主机到现在还没恢复,感觉是要跑路的节奏。

dotnetcore应用的发布有几种模式:

  1. 依赖框架的部署 dotnet publish -c Release
  2. 依赖于框架的可执行文件 dotnet publish -c Release -r [RID] --self-contained false
  3. 独立部署 dotnet publish -c Release -r [RID] --self-contained true

依赖框架的部署就是需要安装dotnetcore的运行时环境,通过dotnet命令启动应用。依赖于框架的可执行文件就是需要安装dotnetcore的运行时环境但是不需要通过dotnet命令,可以直接以二进制的形式运行的。独立部署则是不需要运行时环境,可以直接运行的二进制文件,当然,这种形式的发布也会较大。

上面命令中的RID指的是对应的运行环境,Windows下的RID有如下几种:

  • 可移植(.NET Core 2.0 或更高版本)
    • win-x64
    • win-x86
    • win-arm
    • win-arm64
  • Windows 7 / Windows Server 2008 R2
    • win7-x64
    • win7-x86
  • Windows 8.1 / Windows Server 2012 R2
    • win81-x64
    • win81-x86
    • win81-arm
  • Windows 10 / Windows Server 2016
    • win10-x64
    • win10-x86
    • win10-arm
    • win10-arm64
      Linux下的RID有如下几种:
  • 可移植(.NET Core 2.0 或更高版本)
    • linux-x64(大多数桌面发行版,如 CentOS、Debian、Fedora、 - Ubuntu 及派生版本)
    • linux-musl-x64(使用 musl 的轻量级发行版,如 Alpine Linux)
    • linux-arm(在 ARM 上运行的 Linux 分发版,如 Raspberry Pi)
  • Red Hat Enterprise Linux
    • rhel-x64(被 linux-x64 取代,适用于 RHEL 6 以上版本)
    • rhel.6-x64(.NET Core 2.0 或更高版本)
  • Tizen(.NET Core 2.0 或更高版本)
    • tizen
    • tizen.4.0.0
    • tizen.5.0.0
      MacOS下的RID有如下几种:
  • 可移植(.NET Core 2.0 或更高版本)
    • osx-x64(最低 OS 版本为 macOS 10.12 Sierra)
  • macOS 10.10 Yosemite
    • osx.10.10-x64
  • macOS 10.11 El Capitan
    • osx.10.11-x64
  • macOS 10.12 Sierra(.NET Core 1.1 或更高版本)
    • osx.10.12-x64
  • macOS 10.13 High Sierra(.NET Core 1.1 或更高版本)
    • osx.10.13-x64
  • macOS 10.14 Mojave(.NET Core 1.1 或更高版本)
    • osx.10.14-x64

dotnetcore应用部署的时候,有时还需要指定运行环境进行发布,这时可以采用 dotnet publish -f [TFM] 命令,TFM即目标框架,例如 -f netcoreapp2.1