.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 發布標志,使用該發布選項將不會包含您未使用的類庫,以達到減小發布單體文件的尺寸。您可以將上面的兩個命令一起使用,如下:
dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true /p:PublishTrimmed=true
或在項目文件中配置以上兩個發布標志:
<PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp3.0</TargetFramework> <RootNamespace>Hello_.NETCore3</RootNamespace> <PublishSingleFile>true</PublishSingleFile> <PublishTrimmed>true</PublishTrimmed> <RuntimeIdentifier>win-x64</RuntimeIdentifier> </PropertyGroup>
使用上面的兩個命令后,您會發現,單體可執行文件的尺寸只有 29MB 了。對於簡單的控制台應用程序來說,它仍然有點兒大,但請注意,這是一個包含了 .NET Core 運行時的 self-contained 應用程序。
以上就是我要介紹的全部內容了。
原文鏈接:https://www.talkingdotnet.com/create-trimmed-self-contained-executable-in-net-core-3-0/
譯者注:
參考鏈接: