Visual
部署
两种形式:
- 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 发布流程
- 右键项目编辑 csproj
添加 RuntimeIdentifiers 标签
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<RuntimeIdentifiers>win10-x64;ubuntu.16.04-x64</RuntimeIdentifiers>
</PropertyGroup>
新建发布配置,并设置一个不冲突的发布位置
- 选择 SCD 发布
目标运行时中选择刚才添加的运行时
双击 CoreDemo.exe 运行项目
FDD 的发布的文件只有 5 MB 多,SCD 发布的文件足有 90 MB。