toolgood

  很多人想用DotNet开发软件赚点外快子补添家用,但心里总放不下心来,担心被人破解了。好消息是去年发布的DotNet 5支持单文件部署,不同于DotNet 3运行时将文件释放到临时文件夹内,DotNet 5运行时将文件释放到内存,将安全系数提高了一个层次。

 

  虽然DotNet 5发布已有9个多月了,却没有一个系统性讲单文件部署的系列文章,所以我写了这个系列。

 

一)网上几种 .Net 5的单文件部署方式

  .Net 5下单文件发布的参数是/p:PublishSingleFile=true,它可以和其它几个参数组合,有如下几种单文件发布的方案。

1.1)依赖于Framework

  dotnet publish -r win-x64 --self-contained=false /p:PublishSingleFile=true

1.2)不依赖Framework

  dotnet publish -r win-x64 /p:PublishSingleFile=true

1.3)在GUI中配置单文件发布

在VS界面选择发布,配置如下:

点击发布,生成如下:

 

二、以上单文件部署的缺点:

       第一种:过分依赖于Framework是最大问题。

       第二、三种,不依赖于Framework,却多出了几个文件aspnetcorev2_inprocess.dll、clrcompression.dll、clrjit.dll、coreclr.dll、mscordaccore.dll。

       三种方案都未将wwwroot文件夹打包进EXE文件内。(下篇《打包wwwroot文件夹》)

 

三、合并多出的dll文件的方案。

3.1)在VS界面选择发布,配置后就会生成FolderProfile.pubxml

3.2)在Properties\ PublishProfiles\FolderProfile.pubxml文件的PropertyGroup节点下添加以下代码

  <IncludeNativeLibrariesForSelfExtract>True</IncludeNativeLibrariesForSelfExtract>

3.3)执行发布,生成如下

 

命令行如下:

  dotnet publish -c Release -p:PublishProfile=FolderProfile -o bin/Release-Win

         -c 为 指定配置方案

         -p:PublishProfile 指定 发布配置文件

         -o 指定输出目录

双击后正常运行:

 

 

 

后记:

  dotnet publish -c Release -p:PublishProfile=FolderProfile -o bin/Release-Win

  这个命令行是很有用的,可以做成批处理,同时生成linux和windows版本的应用。

 

相关文章: