釋出.NET應用程式,不單獨安裝執行時

猫叔Vincent發表於2024-07-24

很多.NET開發者編譯好的的程式,釋出到另外一臺電腦的時候,往往都不能執行,而是需要安裝執行時。這個大多數人都知道,直接去執行時官網下載對應版本的安裝包即可。比如我用了6.0,那麼選擇對應架構的版本下載即可。然後在目標機器上安裝這個包,就可以執行我們的.NET程式了。
image

這樣操作起來還是有點麻煩,有沒有辦法把.NET執行時的dll摘出來,和我們的程式放在一起,這樣程式釋出到目標機器,不就直接可以執行了。答案是肯定的,微軟官網提供了非常詳細的釋出說明:將應用釋出為獨立應用,將生成特定於平臺的可執行檔案。 輸出釋出資料夾包含應用的所有元件,包括 .NET 庫和目標執行時。 應用獨立於其他 .NET 應用,且不使用本地安裝的共享執行時。 應用的使用者無需下載和安裝 .NET。我做了一個表格,大概說明一下幾種方式的優缺點,這樣看起來更加直觀。

釋出依賴於框架的應用 釋出獨立應用 使用 ReadyToRun 映像釋出
是否依賴.NET執行時
應用大小

總體來說,就是釋出獨立應用的時候,VS會自動幫你把.Net runtime的dll摘出來,放在exe根目錄publish資料夾,這樣直接copy這個資料夾即可,也算是用磁碟空間換操作時間的最優辦法了。

那麼如何釋出獨立應用呢?

1.命令列

點選“檢視”--—“終端”,或者用快捷鍵Ctrl+~,在終端中輸入dotnet publish -r win-x64,如果你想釋出面向MacOS的包,只需要輸入dotnet publish -r osx-x64,只需要更換最後的一個引數即可。那麼問題來了,最後一個引數是什麼樣的標準,嗯,你可以參考.NET RID 目錄。這個裡面有各種平臺的架構定義,查詢你需要的架構替換即可。
釋出完成後,去終端提示的目錄即可找到需要的獨立應用。
image

2.UI操作

如果你不想用命令列,也可以使用介面操作,這樣就不需要查詢剛才的架構定義表。
找到解決方案,右擊找到“釋出”。
image

選擇釋出到本地資料夾。當然你也可以釋出到Azure雲或者Docker,畢竟.NET是跨平臺的。
image

再次選擇本地
image

選擇釋出目錄,支援區域網地址
image

點選完成後,先不要急著釋出。點選“更多操作”,編輯一下配置
image

這裡有非常詳細的配置選擇,以及是否釋出單個檔案或者使用ReadyToRun編譯,來縮短程式啟動時間。儲存後,點選發布即可。
image
釋出完成後,exe目錄多了一大堆dll,磁碟空間也增加了100多MB的大小。如果你覺得這樣太雜亂了,可以在上一個介面那裡,選擇“生成單個檔案”,資料夾就瞬間清淨了。
image

本文參考微軟官方文件:應用程式釋出

相關文章