之前的ASP.NET Core MVC项目文章中,运行程序都是在VSCode的终端中使用dotnet run命令进行的。正式使用时,肯定需要项目能够脱离开发工具运行。
先前在Windows中基于.net framework开发的程序,如果是winform程序,则直接编译成exe程序运行,或者是打包成安装文件安装运行,如果是webservice服务,一般编译后通过IIS部署。
现在在Ubuntu中,微软提供了两种方式发布ASP.NET Core MVC项目:依赖于框架的发布方式和独立应用发布方式,现一一简介如下:
依赖于框架的发布方式
顾名思义,依赖于框架的发布方式需要项目所在操作系统安装有.net core的运行时,就像.net core 之前的程序运行需要安装对应版本的.net framework一样。本文重在展示发布过程,对这两种发布方式的详细介绍请见参考文献1-2。
用VSCode打开项目,然后在终端中依次运行以下命令(关于命令的介绍请见参考文献3)。命令的运行效果如下图所示。
在dotnet restore
dotnet build
dotnet publish -c release
命令运行完毕后,会在项目文件夹中的bin/release/net5.0/public文件夹中发布项目运行所需的一系列文件,如下图所示。
将publish文件夹复制到桌面中,然后在操作系统终端中运行dotnet TestMVCMySql.dll命令即可启动项目,此时在浏览器中输入网址就能进入项目主页。
独立应用发布方式
独立应用发布方式是指发布后的项目不需要操作系统安装.net core运行时,项目发布过程中将项目的所有依赖的文件都一起发布。本项目在Ubuntu20.04开发、测试,因此本文展示如何将项目以独立应用形式发布到Ubuntu20.04中,由于系统中已安装了.net 5,本文仅展示过程,不进行测试。
首先在.csproj项目文件中的PropertyGroup节点下增加要发布的操作系统标识(详细的标识请见参考文献4,本文中的标识根据参考文献1得来):
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<RuntimeIdentifiers>ubuntu.20.04-x64</RuntimeIdentifiers>
</PropertyGroup>
然后在VSCode的终端中依次运行以下命令,最后一个命令中指定了要发布的系统,-r参数发布针对给定运行时的应用程序。命令的运行效果如下图所示。
dotnet restore
dotnet build
dotnet publish -c release -r ubuntu.20.04-x64
命令运行完毕后,会在项目文件夹中的bin/release/net5.0/文件夹中生成一个与要发布的操作系统标识同名的文件夹,项目运行所需的一系列文件都在该文件夹中,如下图所示(仅截了部分内容)。
将ubuntu.20.04-x64文件夹复制到桌面中(没有测试在其它没有装.net core运行时的操作系统中发布运行),然后在操作系统终端中运行dotnet TestMVCMySql.dll命令即可启动项目,此时在浏览器中输入网址就能进入项目主页。
项目发布的学习暂时学习到这里,后续还会跟着参考文献学习如何使用nginx配置反向代理。
参考文献:
[1]ASP.NET Core跨平台开发从入门到实践
[2]https://docs.microsoft.com/zh-cn/aspnet/core/performance/memory?view=aspnetcore-5.0
[3]https://docs.microsoft.com/zh-cn/dotnet/core/tools/dotnet
[4]https://docs.microsoft.com/zh-cn/dotnet/core/rid-catalog