2019-10-26-dotnet-core-发布只有一个-exe-的方法
title | author | date | CreateTime | categories |
---|---|---|---|---|
dotnet core 发布只有一个 exe 的方法
|
lindexi
|
2019-10-26 8:42:7 +0800
|
2019-2-1 10:6:38 +0800
|
dotnet dotnetcore
|
在 dotnet core 发布的时候,会使用很多文件,这样发给小伙伴使用的时候不是很清真,本文告诉大家一个非官方的方法通过 warp 将多个文件打包为一个文件
和之前相同的方式发布一个 dotnet core 程序,记得需要使用 --self-contained
发布
dotnet publish -c Release --self-contained -r win-x86
这时可以在输出的文件夹 bin 的 Release\netcoreapp2.1\win-x86\publish
文件夹看到输出的文件,可以看到输出的文件很多,这时通过 Powershell 下载 warp 工具
[Net.ServicePointManager]::SecurityProtocol = "tls12, tls11, tls" ; Invoke-WebRequest https://github.com/dgiagio/warp/releases/download/v0.3.0/windows-x64.warp-packer.exe -OutFile warp-packer.exe
当然这个下载方法有些诡异,同时国内的网速也不是很好,可以通过 官网 或 csdn 下载
下载之后将 warp-packer.exe 放在 Release\netcoreapp2.1\win-x86\publish 的上一级文件夹里面,就放在 Release\netcoreapp2.1\win-x86 文件夹
这样就可以通过下面的命令打包出一个 exe 包含里面的文件
当前的命令行路径是 Release\netcoreapp2.1\win-x86 > .\warp-packer --arch windows-x64 --input_dir .\publish\ --exec 在publish文件夹里面运行的程序 --output 输出的.exe
如在 Release\netcoreapp2.1\win-x86 里面的可运行程序 exe 是 lindexi.exe 我可以通过下面的代码合并里面的文件为一个 exe 文件
.\warp-packer --arch windows-x64 --input_dir .\publish\ --exec lindexi.exe --output lindexi.exe
同时使用这个工具还有一个好处,就是对文件进行压缩
限制:
当前(2019年1月3日)只能发布 x64 的版本的程序,如 windows x64 和 linux x64 程序
命令行工具
现在可以通过 dotnet 工具使用 warp 发布,在使用之前先安装工具
dotnet tool install --global dotnet-warp
安装完成可以在输出文件夹里面执行 dotnet-warp
就可以打包为单个exe文件
这个项目在github欢迎小伙伴访问
使用 dotnet 命令行发布
在 dotnet core 3 preview5 支持在命令行一键打包为一个文件
这个文件包含所有的依赖和资源文件,在启动的时候将所有依赖复制到临时文件夹,然后将这些依赖加载。这个解压只会在第一次运行,之后都可以快速启动
dotnet publish -r win10-x64 /p:PublishSingleFile=true
新建一个控制台创建使用上面命令发布为一个 exe 文件的大小大概是 67M 左右
第一次运行需要解压文件到临时文件夹的 .net\程序集名\xx
文件夹里面,然后再运行
dgiagio/warp: Create self-contained single binary applications
Single exe self contained console app · Issue #13329 · dotnet/corefx
2019-10-26-dotnet-core-发布只有一个-exe-的方法的更多相关文章
- dotnet core 发布只有一个 exe 的方法
在 dotnet core 发布的时候,会使用很多文件,这样发给小伙伴使用的时候不是很清真,本文告诉大家一个非官方的方法通过 warp 将多个文件打包为一个文件 和之前相同的方式发布一个 dotnet ...
- dotnet core 发布只带必要的依赖文件
在使用 dotnet core 发布独立项目的时候,会带上大量依赖的库,但是通过微软提供的工具可以去掉一些在代码没有用到的库. 本文介绍的工具是 Microsoft.Packaging.Tools.T ...
- 将WinForm程序(含多个非托管Dll)合并成一个exe的方法
原文:将WinForm程序(含多个非托管Dll)合并成一个exe的方法 开发程序的时候经常会引用一些第三方的DLL,然后编译生成的exe文件就不能脱离这些DLL独立运行了. ILMerge能把托管dl ...
- 使用Visual Studio 2019将ASP.NET Core发布为linux-arm64程序
前言 前段时间入手了一台树莓派4B,一直闲置未使用,最近工作需要,要在上面跑下.NET Core程序,由于树莓派4B使用的是ARM架构,并且支持64位操作系统,为了充分发挥树莓派性能,我的这台树莓派安 ...
- dotnet core 发布环境变量配置 dev/stage/prod
https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/environments?view=aspnetcore-2.2 https://d ...
- dotnet core 发布配置(测试数据库和正式数据库自动切换)
一.起源 在进行项目开发时,常常要求开发环境,测试环境及正式环境的分离,并且不同环境运行的参数都是不一样的,比如监听地址,数据库连接信息等.当然我们把配置信息保存到一个文件中,每次发布的时候,可以先修 ...
- 2019.10.26 CSP%您赛第三场
\(CSP\)凉心模拟^_^ --题源\(lqx.lhc\)等各位蒟蒻 题目名称 比赛 传递消息 开关灯 源文件名 \(competition.cpp\) \(message.cpp\) \(ligh ...
- 6392. 【NOIP2019模拟2019.10.26】僵尸
题目描述 题解 吼题但题解怎么这么迷 考虑一种和题解不同的做法(理解) 先把僵尸离散化,h相同的钦(ying)点一个大小 (可以发现这样每种情况只会被算正好一次) 计算完全被占领的方案,然后1-方案/ ...
- 6389. 【NOIP2019模拟2019.10.26】小w学图论
题目描述 题解 之前做过一次 假设图建好了,设g[i]表示i->j(i<j)的个数 那么ans=∏(n-g[i]),因为连出去的必定会构成一个完全图,颜色互不相同 从n~1染色,点i的方案 ...
- 2019/10/26 TZOJ
1001 Flooded Island http://www.tzcoder.cn/acmhome/problemdetail.do?&method=showdetail&id=452 ...
随机推荐
- VMware 设置支持UEFI
修改后缀名为 vmx 配置文件 添加行: bios.bootDelay = "10000" //延迟10秒进入系统 firmware = "efi" ...
- Redis源码解析:28集群(四)手动故障转移、从节点迁移
一:手动故障转移 Redis集群支持手动故障转移.也就是向从节点发送"CLUSTER FAILOVER"命令,使其在主节点未下线的情况下,发起故障转移流程,升级为新的主节点,而原 ...
- GitBook的使用方法
---恢复内容开始--- 由于近期工作中使用gitbook编写讲义,现把出现的问题总结下: 1 . gitbook的安装 Gitbook与word等办公软件类似,能够编写文档,Gitbook中编写文档 ...
- Unknown command: crawl
Use "scrapy" to see available commands 1.使用命令行方式cmd,是因为没有cd到项目的根目录,crawl会去搜索cmd目录下的scrapy. ...
- php时间戳转换方式
{echo date("Y-m-d",$v.created)} 年-月-日 {echo date("Y-m-d H:i:s",$new.created)} 年- ...
- php mkdir 777失败
参考网址:https://www.cnblogs.com/52php/p/5660079.html 在linux系统中在创建文件/文件夹时有一个默认权限,此权限受 umask 设置影响,在/etc/b ...
- javascript go()函数
<a href="javascript:history.go(-1);">返回上一页</a> put this in your input tag < ...
- cocos2d::ui::TextField 调用setAttachWithIME和setDetachWithIME都无效
http://www.cocoachina.com/bbs/read.php? tid=178406 看三楼: static_cast<CCTextFieldTTF*>(textField ...
- 关系数据库(ch.2)
2.1.1 关系 域 笛卡儿积 关系 candiate key 如果一组属性值可以唯一的标识一个元祖,但是他的子集不行,那么这是一个候选码 关系可以由三种类型 基本关系 查询关系 视图 为关系附加如下 ...
- 【weex】h5weex-example
这个就是一个练手的基础性的demo,不过也是有很多值得学习的东西的 效果如下 项目地址为:https://github.com/h5weex/h5weex-example 可能是我找到的项目比较少,很 ...