1. 程式人生 > >為何.NET Core控制臺項目發布後是一個dll文件,而不是exe文件?

為何.NET Core控制臺項目發布後是一個dll文件,而不是exe文件?

後來 獨立 bubuko nta get 但是 contain wid target

項目中有一個.NET Core控制臺項目叫ConsoleCoreApp,寫好代碼後準備發布:

技術分享圖片

技術分享圖片

結果發布後生成的是一個dll文件。。。為不是一個exe的可執行文件:

技術分享圖片

後來了解到.NET Core的項目分為兩種發布方式,一種叫Framework-dependent deployments (FDD),還有一種叫Self-contained deployments (SCD),這兩種發布有何區別可以查看微軟的官方文檔。

而默認情況下.NET Core控制臺項目的發布方式為Framework-dependent deployments (FDD),這種方式生成的就是dll文件,需要用"dotnet ConsoleCoreApp.dll"指令來運行。而如果在發布的時候選擇Self-contained deployments (SCD)方式,生成的就是exe文件。

現在我們還是在項目上選擇發布,不過這次我們在發布前先配置發布選項,點擊配置:

技術分享圖片

有兩個選項需要更改,一個是部署模式,我們這次選為:獨立(即Self-contained deployments (SCD)模式),然後目標運行時選為:win-x64(這個選項和你部署後的操作系統有關),然後點保存。

技術分享圖片

然後再次發布:

技術分享圖片

這次我們可以看到發布後生成的就是exe文件了,但是很明顯由於Self-contained deployments (SCD)模式會將所有.NET Core的系統程序集也都生成出來,會造成發布後的發布文件數量增加,整個項目的程序文件變大,這一點要註意!

技術分享圖片

為何.NET Core控制臺項目發布後是一個dll文件,而不是exe文件?