很多.NET開發者編譯好的的程式,發佈到另外一臺電腦的時候,往往都不能運行,而是需要安裝運行時。這個大多數人都知道,直接去運行時官網下載對應版本的安裝包即可。比如我用了6.0,那麼選擇對應架構的版本下載即可。然後在目標機器上安裝這個包,就可以運行我們的.NET程式了。 這樣操作起來還是有點麻煩,有沒 ...
很多.NET開發者編譯好的的程式,發佈到另外一臺電腦的時候,往往都不能運行,而是需要安裝運行時。這個大多數人都知道,直接去運行時官網下載對應版本的安裝包即可。比如我用了6.0,那麼選擇對應架構的版本下載即可。然後在目標機器上安裝這個包,就可以運行我們的.NET程式了。
這樣操作起來還是有點麻煩,有沒有辦法把.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 目錄。這個裡面有各種平臺的架構定義,查找你需要的架構替換即可。
發佈完成後,去終端提示的目錄即可找到需要的獨立應用。
2.UI操作
如果你不想用命令行,也可以使用界面操作,這樣就不需要查找剛纔的架構定義表。
找到解決方案,右擊找到“發佈”。
選擇發佈到本地文件夾。當然你也可以發佈到Azure雲或者Docker,畢竟.NET是跨平臺的。
再次選擇本地
選擇發佈目錄,支持區域網地址
點擊完成後,先不要急著發佈。點擊“更多操作”,編輯一下配置
這裡有非常詳細的配置選擇,以及是否發佈單個文件或者使用ReadyToRun編譯,來縮短程式啟動時間。保存後,點擊發佈即可。
發佈完成後,exe目錄多了一大堆dll,磁碟空間也增加了100多MB的大小。如果你覺得這樣太雜亂了,可以在上一個界面那裡,選擇“生成單個文件”,文件夾就瞬間清凈了。
本文參考微軟官方文檔:應用程式發佈
作者:貓叔Vincent 本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。