P18 .Net Core 部署
.Net Core 部署类型.
- FDD, Framework-dependent
- SCD, Self-contained
FDD 即:依赖于 Framework(框架)
SCD 即:自包含,什么都不需要.
FDD Framework-dependent
-
优点:
- 无需配置服务器的操作系统.
- 部署包很小.
- .Net Core 是共享的.
-
缺点:
- 只有在预先安装了 .Net Core的情况下才能运行.
- 可能会有兼容性问题. (应用程序需要的 .Net Core版本不一致)
SCD Self-contained
-
优点:
- 可以对你使用的 .Net Core版本进行单独隔离控制.
- 应用程序100%可以目标系统运行.
- 不同 .Net Core 版本的应用可无干扰共存并运行.
-
缺点:
- 需要配置目标服务器操作系统.
- 部署包比较大.
FDE Framework - Dependent executables
FDE 模式不常用,如果需要了解,我们需要去查询官方文档.
FDE 模式可以总结为是, FDD模式和SOD模式的结合体.
部署模式 选择: 依赖框架,而 目标运行时 选择:除可移植
之外的系统类型,即是FDE
部署模式.
FDE
不是模式生成的文件包括: 自己写的代码生成的程序集,以及不在.Net Core
运行时中的dll也会生成进来.
- 自包含的部署.
- 会使用以前安装过的 .Net Core的资源.
- 生成系统原生的可执行文件.
发布过程
第一步我们先右击需要发布的 .Net Core 项目(前提是能编译通过). 选择发布
:
选择文件夹,我们可以修改文件夹所在的位置,然后点击创建配置文件:
此时如果我们想修改的话我们需要点击编辑
:
在弹出的页面使用默认的文件系统,并点击设置
:
进行设置:
配置: 表示使用何种发布模式 如: Release , Debug
目标框架: 表示允许此程序需要的 .Net Core 版本.
部署模式: 有框架依赖(FDD),独立(SCD)
目标运行时:
可移植: 表示当前的程序依赖于 .Net CLR 来运行我们的程序,即,我们不再需要生成具体平台的可执行程序了,如:windows下的exe程序.
接下来,点击保存
,之后点击发布
,之后等待发布结束即可.
发布成功之后会生成如下文件:
使用FDD模式发布的 .Net Core 项目,我们需要在运行的系统上安装 .Net Core运行环境,否则无法使用此 .Net Core 项目.
由于项目要求使用的是 .Net Core 3.1,我电脑上没有安装 .Net Core 3.1 框架所以会运行失败.
运行失败例:
下面我们装 .Net Core 3.1.3 共享框架
.Net Core 3.1.3 共享框架安装完成.
我们再运行一下:
还是运行失败,我们注意到:
- It was not possible to find any compatible framework version
The framework 'Microsoft.NETCore.App', version '3.1.3' was not found.
找不到任何兼容的框架版本找不到版本为“3.1.3”的框架“Microsoft.NETCore.App”。
- You can resolve the problem by installing the specified framework and/or SDK.
你可以通过安装指定的框架和/或SDK来解决问题。
- The specified framework can be found at:
https://aka.ms/dotnet-core-applaunch?framework=Microsoft.NETCore.App&framework_version=3.1.3&arch=x64&rid=win10-x64
可以在以下位置找到指定的框架:
https://aka.ms/dotnet-core-applaunch?framework=Microsoft.NETCore.App&framework_version=3.1.3&arch=x64&rid=win10-x64
如果我们希望在windows左面运行 .Net Core 程序我们需要下载Run Desktop apps
中的下载项,如果想在windows
服务器(IIS)上运行 .Net Core
项目,我们需要选择Run Server apps
中的下载项,在Linux
系统中需要运行.Net Core
项目下载Linux
运行依赖即可.
复制上面的网址进行下载:
安装:
再一次运行:
几个和 .Net Core 相关的cmd 命令
查看当前使用的 .Net Core 版本
dotnet -- version
查看当前windows计算机上安装的所有版本 以及版本地址
dotnet -- info
使用 .Net 帮助命令
dotnet -- help
使用 SCD 部署类型进行部署
将部署模式选择为:独立
将目标运行时:选择你想要运行的系统类型,保存,然后发布即可.
这个发布过程就会相对于FDD模式有就有点慢了,因为它需要包含 .Net Core相关的运行时,以及一些依赖文件.
我们可以看到发布后的文件多了很多文件.
此时我们运行一下程序发现可以成功了:
并且可以顺利的请求到:
沿用上面的操作,我们使用SCD部署类型
也可以生成自包含的,无依赖的 .Net Core
项目文件,并将其部署至Liunx
或者其它操作系统之上.