.Net Core程序最终只产生1个exe
1、用VS新建一个.Net Core 命令行程序,程序里面写什么都行,我的是这样的

2、打开程序包控制台,或者使用PowerShell等可以执行dotnet命令的工具,把你的.Net 程序发布(编译)出来,win-x86 是 保证产生的这一堆文件中有.exe文件
dotnet publish -c Release --self-contained -r win-x86

执行指令后,就会在这里多一个publish文件夹,publish文件夹里面有各种dll和别的乱七八糟的文件以及一个Generate.exe文件,双击这个exe就能执行程序,但我们不想给这么一大堆东西给别人用,所以下面要把publish文件夹整合成1个exe文件
3、获取warp-packer.exe这个小工具
可以使用PowerShell获取,也可以到官网 获取,PowerShell获取的指令为,OutFile为获取后文件放哪,下面的指令是放到当前打开PowerShell的目录下
[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
4、确保warp-packer.exe和publish文件夹在同一文件夹下,在这个文件夹下(即win-x86文件夹下)PowerShell执行指令,指令大致意思是把当前目录下的publish文件夹下的所有文件整合起来,其中,publish文件夹下的可执行文件为GenerateCsFile.exe,输出文件为当前目录下的gcf.exe(这个名字随便取)
.\warp-packer --arch windows-x64 --input_dir .\publish\ --exec GenerateCsFile.exe --output gcf.exe
指令执行后就会产生gcf.exe文件了,由于是发布文件夹生成的文件,所以只要拿着这个gcf.exe到别的机器(可运行x86程序的机器)上,就可以执行,无需任何别的文件

P.S. 如果确定运行这个exe的目标机器上安装了.net core runtime的,也可以使用这个命令编译到一个文件夹中,这样产生的文件大小比较小(dotnet publish指令会把依赖的所有dll都拉进文件夹中),对比了一下publish整合出来的exe大小为26.2M,这种产生的exe大小只有1.45M
dotnet build --runtime win-x64

最后,大家可能会问“我每次打包exe都要这么走一遭,那不是很麻烦“,马上给自己的dotnet安装这个小工具,VS程序包控制台运行
dotnet tool install --global dotnet-warp
就可以直接在PowerShell运行dotnet-warp来打包啦(好像有点代价,这种方式产生的exe似乎还会再大一点--29.1M)

参考自lindexi的博客
.Net Core程序最终只产生1个exe的更多相关文章
- 从头认识一下docker-附带asp.net core程序的docker化部署
从头认识一下docker-附带asp.net core程序的docker化部署 简介 在计算机技术日新月异的今天, Docker 在国内发展的如火如荼,特别是在一线互联网公司, Docker 的使用是 ...
- 关于.net core程序的部署
最近发布.net core程序的时候,发现它是可以独立部署的,它支持如下两种部署方式: 依赖框架的部署FDD.只发布我们的程序,运行前用户需要手动安装.net core runtime. 独立部署SC ...
- 如何在Visual Studio 2017中使用C# 7+语法 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构 构建NetCore应用框架之实战篇系列 构建NetCore应用框架之实战篇(一):什么是框架,如何设计一个框架 NetCore入门篇:(十二)在IIS中部署Net Core程序
如何在Visual Studio 2017中使用C# 7+语法 前言 之前不知看过哪位前辈的博文有点印象C# 7控制台开始支持执行异步方法,然后闲来无事,搞着,搞着没搞出来,然后就写了这篇博文,不 ...
- ASP.NET Core教程:ASP.NET Core 程序部署到Windows系统
一.创建项目 本篇文章介绍如何将一个ASP.NET Core Web程序部署到Windows系统上.这里以ASP.NET Core WebApi为例进行讲解.首先创建一个ASP.NET Core We ...
- 如何在ASP.NET Core程序启动时运行异步任务(3)
原文:Running async tasks on app startup in ASP.NET Core (Part 3) 作者:Andrew Lock 译者:Lamond Lu 之前我写了两篇有关 ...
- 如何优雅的利用Windows服务来部署ASP.NET Core程序
上一篇文章中我给大家讲述了五种部署ASP.NET Core网站的方法,其中有一种方式是通过Windows服务来进行部署,这样既可以做到开启自启动,又不会因为iis的反向代理而损失部分性能.但是美中不足 ...
- 查看服务器运行多少个ASP.NET Core程序
有时候,我们会想知道某台机器上面跑了什么程序. 当程序部署到IIS上面的时候,我们只需要打开IIS一看,就知道有多少个站点在运行了. 当我们在CentOS上面部署的时候,就没那么的直观了. 当然对于熟 ...
- .net core程序部署
前期将一些程序切换到了.net core,本文这里记录下windows 下.net core程序部署相关的方法.有同样需求的朋友可以参考一下,以免少走一些弯路. .net core程序部署主要工作就是 ...
- tms web core程序部署
tms web core程序部署 笔者把已经开发好的TMS WEB CORE程序部署到阿里云服务器上面,来作为例子. 1)复制TMS WEB CORE前端程序到服务器的c:\room\ 2)复制TMS ...
随机推荐
- 冬日曙光——回溯CNN的诞生
前言 卷积神经网络(CNN)作为深度学习的重要一支,在当前计算机视觉领域应用相当广泛.本文回顾了深度学习的发展历程,讲述CNN基本的理论概念和第一代卷积神经网络LeNet-5的建立.文章言有不当之处, ...
- ArrayList与LinkedList比较
ArrayList与LinkedList比较 1.实现方式 ArrayList内部结构为数组,定义如下: /** * The array buffer into which the elements ...
- linux下oracle调试小知识
1.oracle 安装下的/u01/diag/rdbms/orcl/HOF/incident目录下是什么文件?答:每当一个错误发生的时候,oracle会创建一个incident,并且分配一个INCID ...
- 10个很多人不知道的Redis使用技巧
前言 Redis 在当前的技术社区里是非常热门的.从来自 Antirez 一个小小的个人项目到成为内存数据存储行业的标准,Redis已经走过了很长的一段路.随之而来的一系列最佳实践,使得大多数人可以正 ...
- html块级元素的水平垂、直居中的方式
说明 对于初学者来说,块级元素的剧中,也是一大难题,我学习的时候,也是一脸懵逼,每次遇到都要百度,但是写的多了也自然记住一些常用的剧中方式,但是还是很模糊,今天就来好好总结一些. 布局 布局即为简单, ...
- asp.net core 2.2升到3.1遇到的问题小记
趁着武汉疫情,在家研究原来2.2的框架升级到3.1的问题,在过程中遇到不少坑,好在放假有的是时间,一个一个解决,现做个简要记录,供大家参考.推荐认真看这篇文章 [https://docs.micros ...
- html网页压缩保存到数据库,减少空间占用,实现过程遇到的解压问题
场景: python获取到网页,把网页gzip打包,并Base64编码保存: 由java负责Base64解码并解压二进制成html 遇到的问题: 1.python 的request,缺省就把gzip响 ...
- Dubbo(三):深入理解Dubbo源码之如何实现服务引用
一.前言 前面讲了服务是如何导出到注册中心的.其实Dubbo做的一件事就是将服务的URL发布到注册中心上.那现在我们聊一聊消费者一方如何从注册中心订阅服务并进行远程调用的. 二.引用服务时序图 首先总 ...
- ListFragment 使用ListView and 自定义Adapter
在开发过程中经常使用Tabs + ListFragment 作为表现形式. ListFragment 中加入ListView显示方式很容易. [java] view plaincopy package ...
- Codeforces_723_C
http://codeforces.com/problemset/problem/723/C 将n个数替换为1-m内的数,使得1-m的个数的最小值最大,并且替换步骤最少.注意,不必将每个数都替换!! ...