很多人想用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版本的应用。

最新文章

  1. Unity引擎下最快的Xml读取器:UnityRapidXml
  2. 背水一战 Windows 10 (7) - 控件 UI: VisualState, VisualStateManager, 控件的默认 UI
  3. hdu---(Tell me the area)(几何/三角形面积以及圆面积的一些知识)
  4. 你确定你是一个合格的.Net开发人员吗?
  5. sql server 2012 镜像和出现的问题
  6. Eequal sum sets
  7. 搜索结果Refinement 行为总结之 multi-selection refinement
  8. C# 三种打印方式含代码
  9. 什么是 IP 隧道,Linux 怎么实现隧道通信?
  10. ORA-12537: Network Session: End of file
  11. Django的admin视图的使用
  12. Jetty - 教程
  13. shell编程 之 test命令
  14. iOS 线程安全--锁
  15. silverlight 定时器 System.Windows.Threading.DispatcherTimer
  16. python中判断实例可迭代地几种方式
  17. 【python3】爬取新浪的栏目分类
  18. [BZOJ4340][BJOI2015]隐身术(后缀数组)
  19. MOSS 2013研究系列---修改默认Logo
  20. Hessian矩阵与多元函数极值

热门文章

  1. 关于maven打包与jdk版本的一些关系
  2. LATEX学习和IEEE Tran模板介绍
  3. Linux下-LNMP环境搭建博客网站(全过程)
  4. 分布式事务最终一致性-CAP框架轻松搞定
  5. Vulhub-DC-3靶场
  6. 五、从GitHub浏览Prism示例代码的方式入门WPF下的Prism之MVVM中的EventAggregator
  7. fiddler 之 返回数据乱码解决方法
  8. 树莓派远程连接工具VNC使用教程
  9. 温故知新,微软官方推荐的Visual Studio源代码管理之Git Ignore清单,开启新项目必备宝书
  10. Redis 实战篇:巧用Bitmap 实现亿级海量数据统计