dotnet5-项目快速起步

用最简单的方式介绍dotnet中我所用到的一小小小部分,更多具体信息需要查看官方文档。

Solution和Project

一个Solution可以包括多个Project,比如在我的项目中,为了方便(其实是电脑打开两个IDE太卡),把MongoDB-PBAC-Server/Client/Common三个Project放在同一个Solution里,其中sln文件就是Solution的相关配置文件,csproj文件就是Project的配置文件。

在这里,我的Project分为两种,*-Common是一个Class Library(类库),可以打包成NuGet包,另外两个是Console Application(控制台应用),可以引入NuGet包,直接运行或者打包成可执行文件。

打包

dotnet build命令会将项目及其依赖包生成为一大堆二进制文件(.dll,.pdb等)。

build之后,通过dotnet pack --no-build命令可以将项目打包为NuGet包,也就是一个.nupkg文件,--no-build指明无需再build一次,所以也可以直接pack而不用先buiid

也可以在csproj文件中指定<GeneratePackageOnBuild>true</GeneratePackageOnBuild>,这样子在build的时候会自动pack

默认情况下会在**/bin/Debug/下生成一个.nupkg文件,更多选项可以参考文档。

得到的NuGet包可以放到某个文件夹里,然后在本地的NuGet配置文件(~/.nuget/NuGet/NuGet.Config)中指定路径,相当于添加本地源,这样子就可以通过dotnet add或者直接在IDE中安装NuGet包,对应的在csproj文件中就会有响应的<PackageReference Include="" Version=""/>

发布

dotnet publish -r linux-x64 -p:PublishSingleFile=true -p:PublishTrimmed=true,该命令默认会在**/bin/Debug/net5.0/linux-x64/publish下生成一个可执行文件。

其中-r后面接linux-x64是指定运行时(runtime),而PublishSingleFile=truePublishTrimmed=true分别表示生成单个可执行文件以及对生成的文件进行裁剪,减小文件大小。

build和publish

简单来说,build不会把第三方的依赖包打包进入,所以build之后的可执行文件可以在本机运行,在运行时依赖本地的依赖包,而publish是专门用于发布的,所以会将所有依赖包打包进入,可以直接移植到其他机器运行。

根据官方文档,其实在.Net Core3.0之后的项目,库依赖项会被打包到输出文件夹。 如果没有其他任何特定于发布的逻辑(例如,Web项目具有的逻辑),也可以直接部署。