天天看點

.NET Core 3.0 釋出小尺寸 self-contained 單體可執行程式

.NET Core 提供的釋出應用程式選項 self-contained 是共享應用程式的好方法,因為應用程式的釋出目錄包含所有元件、運作時和架構。您隻需要告訴使用者應用程式的入口 exe 檔案,就可以使程式運作起來,而不必擔心目标計算機上是否存在.NET Core 運作時和應用架構。目前 .NET Core 3.0 Preview 6 已經推出,也包含了更多新功能。其中一個有用的功能就是引入了 PublishTrimmed 釋出标志。此标志可以很大程式上減少可執行檔案的大小并會建立一個修剪過的自包含單體可執行檔案。下面我們來看一下如何釋出一個經過修剪的單體可執行檔案。

.NET Core 3.0 中釋出 self-contained 程式可以使用下面的指令:

dotnet publish -r win-x64 -c Release --self-contained

上面的指令執行之後會在建立的釋出檔案夾中包含 self-contained 可執行程式所需的所有檔案,檔案數大概有 100 個左右,如果想要在目标計算機上運作這個應用程式,那就需要複制這個釋出檔案夾内所有檔案,似乎并不是那麼友善,而且這些檔案占用的空間也不算小。

這個問題在 .NET Core 3.0 Preview 5 中得到了解決。此版本引入了一個 PublishSingleFile 釋出标志,用于生成一個單體 exe 可執行檔案。該釋出标志的使用方法如下:

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

或者在項目檔案中配置如下節點:

<PropertyGroup>

<OutputType>Exe</OutputType>

<TargetFramework>netcoreapp3.0</TargetFramework>

<RootNamespace>Hello_.NETCore3</RootNamespace>

<PublishSingleFile>true</PublishSingleFile>

<RuntimeIdentifier>win-x64</RuntimeIdentifier>

</PropertyGroup>

使用此釋出标志後隻會生成一個 exe 可執行檔案和符号檔案。見下圖

現在隻有一個可執行檔案了,但其檔案大小有點兒小問題,一個可執行程式接近 70MB 。上面說過,在 .NET Core 3.0 Preview 6 中引入了 PublishTrimmed 釋出标志,使用該釋出選項将不會包含您未使用的類庫,以達到減小釋出單體檔案的尺寸。您可以将上面的兩個指令一起使用,如下:

www.121mu.com/zcfg135/

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

或在項目檔案中配置以上兩個釋出标志:

<PublishTrimmed>true</PublishTrimmed>

使用上面的兩個指令後,您會發現,單體可執行檔案的尺寸隻有 29MB 了。對于簡單的控制台應用程式來說,它仍然有點兒大,但請注意,這是一個包含了 .NET Core 運作時的 self-contained 應用程式。

以上就是我要介紹的全部内容了。

Net

繼續閱讀