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

《DotNet Web应用单文件部署系列》一、pubxml文件配置的更多相关文章

  1. 《DotNet Web应用单文件部署系列》二、打包wwwroot文件夹

    在这篇文章中,你将学到web缓存规则,文件传输中用到的压缩格式,以及如何手写代码响应请求.最后还能学到快速打包wwwroot文件夹组件用法. 一.了解Response Header 当第一次加载程序时 ...

  2. 《DotNet Web应用单文件部署系列》三、混淆dll文件

    众所周知,C#编译后的dll文件可被反编译,网上搜索"C# 反编译"会出现一大堆资料.为了提高反编译成本,我们必须对dll文件进行混淆处理. 目前,C#混淆工具很多,我推荐obfu ...

  3. .Net 5下的单文件部署

    由于.net程序没有静态链接,一直缺乏单文件部署这种干净的发布方案.对客户端程序发布并不是很友好.在之前的.net framework下,有ILMerge合并程序集,以及LibZ的嵌入资源文件等第三方 ...

  4. Web攻防系列教程之文件上传攻防解析(转载)

    Web攻防系列教程之文件上传攻防解析: 文件上传是WEB应用很常见的一种功能,本身是一项正常的业务需求,不存在什么问题.但如果在上传时没有对文件进行正确处理,则很可能会发生安全问题.本文将对文件上传的 ...

  5. Flask开发系列之Web表单

    Flask开发系列之Web表单 简单示例 from flask import Flask, request, render_template app = Flask(__name__) @app.ro ...

  6. eclipse中web项目部署以后jsp的java文件找不到问题(Tomcat配置serverlocations)

    我的开发环境:eclipse kepler (4.3)+tomcat7.0.42. 在我想看eclipse中web项目jsp文件被tomcat转换成java以后的java源文件的位置,发现正常情况下的 ...

  7. 【Android Studio安装部署系列】二十五、Android studio使用NDK生成so文件和arr文件

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 Android Studio使用ndk的简单步骤. NDK环境搭建 下载NDK 下载链接:https://developer.and ...

  8. web 表单方式上传文件方法(不用flash插件)

    原理:使用表单的input type="file"标签,通过ajax提交表单请求,后台获取请求中的文件信息,进行文件保存操作 由于我测试用的做了一个上传文件和上传图片方法,所以我有 ...

  9. 一起看期待已久的.NET Core 3.0新的单文件部署特性,记在昨日VS2019更新后

    VS2019又又又迎来一次新的更新,这次的重点在.NET Core, 妥妥的更新好,默默地反选2.2,一切都在意料之中. 这次我们来看VS2019的新特性单文件部署: https://www.talk ...

随机推荐

  1. jquery点击空白处事件

    $(document).live('click',function(){       $('.emails').hide();   }); 此代码为点击空白处,'emails',标签隐藏.

  2. 使用C#winform编写渗透测试工具--SQL注入

    使用C#winform编写渗透测试工具--SQL注入 本篇文章主要介绍使用C#winform编写渗透测试工具,实现SQL注入的功能.使用python编写SQL注入脚本,基于get显错注入的方式进行数据 ...

  3. (原创)[.Net] 进程间通信框架(基于共享内存)——SimpleMMF

    一.前言 进程间通信技术的应用非常广泛,在Windows下常用的实现方式有:管道.Socket.消息.本地文件.共享内存等,每种方式都有各自适应的场景. 在进行大数据交换时,最优的方式便是共享内存. ...

  4. .Net Core微服务——Consul(4):主从、集群

    延续上一篇的话题继续,顺便放上一篇的传送门:点这里. 集群的必要性 consul本身就是管理集群的,现在还需要给consul搞个集群,这是为啥?因为consul单点也容易挂啊!万一管理集群的consu ...

  5. Centos8 Nginx 开机自启配

    第一步:创建 service文件 vim /lib/systemd/system/nginx.service /lib 与 /usr/lib 我这里配置时是一样的,在那个文件夹配置都可以 第二步:编写 ...

  6. ip地址分配

    目录 一.子网划分基础 二.子网划分的原理 三.IP地址汇总 四.ip地址规划 一.子网划分基础 二进制: 特点:基数为2,数值部分用2个不同的数字符号0.1表示逢二进一 IP地址:IP地址由32位二 ...

  7. requests 上件中文文件名报错解决方案

    这几天在用wxpy写机器人,在调用里面的上传文件接口的时候,一直报错.经过排查后,发现是不支持中文文件名:在群里问了下作者后才知道是requests惹的祸,默认requests用的是unicode来处 ...

  8. 打造自己的Vue组件文档生成工具

    程序员最讨厌的两件事情,第一种是写文档,另一种是别人没有写文档.有没有直接根据vue组件生成文档的呢?当然是有的的.但第三方使用起来不一定能和现有项目结合使用,往往需要额外的注释用来标记提取信息.使用 ...

  9. 智能合约审计-不安全的delegatecall

    简介 当合约A以delegatecall方式调用时, 相当于将外部合约B的func()代码复制过来 (其函数中涉及的变量或函数都需要在本地存在), 在合约A上下文空间中执行. 合约 pragma so ...

  10. Android程序员如何通过跳槽薪资翻倍?

    马爸爸总结了一句话:跳槽,要么是钱不到位,要么是受了委屈. 我给自己这次的跳槽经历做了一个分析,希望能对那些想换工作的朋友有所帮助. 许多朋友想换工作,但是对"换工作"的理解可能仅 ...