zoukankan      html  css  js  c++  java
  • .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的博客

  • 相关阅读:
    IOC
    paxos算法
    搜索引擎相关
    java常识
    Redis相关概念
    Keepalived简单理解
    LVS简单理解
    dbproxy
    用不上索引的sql
    二叉树、B树、B+树、B*树、VAL树、红黑树
  • 原文地址:https://www.cnblogs.com/ogurayui/p/12067064.html
Copyright © 2011-2022 走看看