天天看點

《DotNet Web應用單檔案部署系列》一、pubxml檔案配置

  很多人想用DotNet開發軟體賺點外快子補添家用,但心裡總放不下心來,擔心被人破解了。好消息是去年釋出的DotNet 5支援單檔案部署,不同于DotNet 3運作時将檔案釋放到臨時檔案夾内,DotNet 5運作時将檔案釋放到記憶體,将安全系數提高了一個層次。

  雖然DotNet 5釋出已有9個多月了,卻沒有一個系統性講單檔案部署的系列文章,是以我寫了這個系列。

一)網上幾種 .Net 5的單檔案部署方式

  .Net 5下單檔案釋出的參數是/p:PublishSingleFile=true,它可以和其它幾個參數組合,有如下幾種單檔案釋出的方案。

1.1)依賴于Framework

  dotnet publish -r win-x64 --self-contained=false /p:PublishSingleFile=true

《DotNet Web應用單檔案部署系列》一、pubxml檔案配置

1.2)不依賴Framework

  dotnet publish -r win-x64 /p:PublishSingleFile=true

《DotNet Web應用單檔案部署系列》一、pubxml檔案配置

1.3)在GUI中配置單檔案釋出

在VS界面選擇釋出,配置如下:

《DotNet Web應用單檔案部署系列》一、pubxml檔案配置

點選釋出,生成如下:

《DotNet Web應用單檔案部署系列》一、pubxml檔案配置

二、以上單檔案部署的缺點:

       第一種:過分依賴于Framework是最大問題。

       第二、三種,不依賴于Framework,卻多出了幾個檔案aspnetcorev2_inprocess.dll、clrcompression.dll、clrjit.dll、coreclr.dll、mscordaccore.dll。

       三種方案都未将wwwroot檔案夾打包進EXE檔案内。(下篇《打包wwwroot檔案夾》)

三、合并多出的dll檔案的方案。

3.1)在VS界面選擇釋出,配置後就會生成FolderProfile.pubxml

3.2)在Properties\ PublishProfiles\FolderProfile.pubxml檔案的PropertyGroup節點下添加以下代碼

  <IncludeNativeLibrariesForSelfExtract>True</IncludeNativeLibrariesForSelfExtract>

3.3)執行釋出,生成如下

《DotNet Web應用單檔案部署系列》一、pubxml檔案配置

指令行如下:

  dotnet publish -c Release -p:PublishProfile=FolderProfile -o bin/Release-Win

         -c 為 指定配置方案

         -p:PublishProfile 指定 釋出配置檔案

         -o 指定輸出目錄

輕按兩下後正常運作:

《DotNet Web應用單檔案部署系列》一、pubxml檔案配置

後記:

  這個指令行是很有用的,可以做成批處理,同時生成linux和windows版本的應用。

繼續閱讀