iT邦幫忙

4

寫好了一個程式,想問打包成EXE的問題

  • 分享至 

  • xImage

最近用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...

mayyola iT邦研究生 1 級 ‧ 2024-12-22 12:44:41 檢舉
我是用vs2017 Costura.Fody 3.3.3 版可以 完整打包
x19871204 iT邦新手 5 級 ‧ 2024-12-22 13:56:04 檢舉
有試著將Costura.Fody 降至3.3.3 版,但還是一樣。想試試安裝VS2017,但官網好像不能下載,請問有哪裡可以下載2017呢
圖片
  直播研討會
5
jack8900
iT邦新手 1 級 ‧ 2024-12-24 11:27:33
最佳解答

https://ithelp.ithome.com.tw/upload/images/20241224/20118321PHijOWktrR.png
如果是.NET,發布的時候,目標執行階段選擇64位元,底下會出現檔案發行選項,裡面有一個是產生單一檔案,然後就會只有一個EXE與.pdb檔案,pdb可以不理他

dotnet publish會變成很大是因為你把.NET的所有函數庫都包進去了,好處是使用者不用安裝runtime,前者檔案比較小,但是使用者需要安裝runtime

x19871204 iT邦新手 5 級 ‧ 2024-12-24 23:41:22 檢舉

照著你的方法嘗試...居然成功了!!!
實在太感謝你了,請受小弟一拜!!!
終於可以好好地睡一覺了/images/emoticon/emoticon46.gif

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
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!

我要發表回答

立即登入回答