最近用visual studio 2022写好了一个VB.NET的程式,按建置后会出现许多DLL档、一个EXE档还有一些其他杂档,上网GOOGLE后使用了Costura.Fody,例如原本结果会有10个DLL档+1个EXE,使用Costura.Fody结果变成1个DLL与1个EXE(只拉EXE出来是不能用的),我该如何将DLL包进EXE内呢?有试过使用dotnet publish成功打包成一个EXE,但原本EXE+DLL也才不到10MB,用dotnet publish却变成100多MB...

3 个回答

  • 旧至新
  • 新至旧
  • 最高Like数

5

jack8900

iT邦新手 1 级 ‧ 2024-12-24 11:27:33

最佳解答

如果是.NET,发布的时候,目标执行阶段选择64位元,底下会出现档案发行选项,里面有一个是产生单一档案,然后就会只有一个EXE与.pdb档案,pdb可以不理他

dotnet publish会变成很大是因为你把.NET的所有函数库都包进去了,好处是使用者不用安装runtime,前者档案比较小,但是使用者需要安装runtime


  • 3

x19871204

iT邦新手 5 级 ‧
2024-12-24 23:41:22

照着你的方法尝试...居然成功了!!!
实在太感谢你了,请受小弟一拜!!!
终于可以好好地睡一觉了

修改

jack8900

iT邦新手 1 级 ‧
2024-12-25 09:36:09

图片中的画面,背后其实也是执行dotnet publish,只是因为参数的选择不同,才会有不同结果

只要把部属模式换成独立式,就会产出档案很大的版本

目标执行阶段,如果选择都支援,也没办法产出单一档案,目前一般使用者应该都是64位元作业系统,所以可以直接选择64位元

修改

x19871204

iT邦新手 5 级 ‧
2024-12-25 19:25:56

了解!剩下的我在自己摸索看看,非常感谢!

修改

3

zivzhong

iT邦研究生 4 级 ‧ 2024-12-22 16:23:52

感觉可以参考:
https://www.aisys.com.tw/web/tech/tech.php?question_id=174


  • 3

x19871204

iT邦新手 5 级 ‧
2024-12-23 11:31:50

测试后还是不行,使用这个连EXE都不出现了XD

修改

zivzhong

iT邦研究生 4 级 ‧
2024-12-23 13:42:23

QQQQQQQQQQQQQQQQQQQQQ

修改

x19871204

iT邦新手 5 级 ‧
2024-12-23 15:51:10

我发现2019版本中compiler出来的档案,就算有一堆DLL及其他杂档也不用管他,只要把EXE提出来就可以直接使用!
但在2022中只要有一个档案没有一起布署就无法开启...真是太神奇了!
只不过2022的EXE执行速度比2019快了两倍...
虽然暂时算是解决我的问题了,但有机会的话还是想知道2022为什么不行。

修改

0

boylesa2

iT邦见习生 ‧ 2025-01-16 18:14:48

Thanks for the tips! Choosing the right publishing options can make a huge difference in the user experience. I appreciate the explanation about the trade-offs between a single EXE and the runtime installation. It’s definitely a consideration block blast for ensuring ease of deployment!