【译】.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 发布标志,使用该发布选项将不会包含您未使用的类库,以达到减小发布单体文件的尺寸。您可以将上面的两个命令一起使用,如下:
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/
译者注:
参考链接:
- https://devblogs.microsoft.com/dotnet/announcing-net-core-3-0-preview-6/
- https://github.com/mono/linker/blob/master/src/ILLink.Tasks/README.md
转载于:https://www.cnblogs.com/jRoger/p/create-trimmed-self-contained-executable-in-net-core-3-0.html
- .NET Core 3.0 Preview 5 亮点之一:发布单文件可执行程序
- 如何将在Eclipse中编写的java程序发布成.exe的可执行文件 (转)
- 封装了envi函数的IDL发布程序的执行方法 以及注意事项
- ASP.NET Core中实现单体程序的事件发布/订阅
- 怎么快速搞定 .NET Core 程序的跨平台独立发布
- 如何将在Eclipse中编写的java程序发布成.exe的可执行文件
- 手工将python程序发布为exe执行程序
- [转]手工将python程序发布为exe执行程序
- Python:程序发布方式简介一(打包为可执行文件EXE)
- net core 程序docker打包镜像并发布到官方store
- 发布!NfaGen2 着色功能概念演示版 可执行程序
- 【VS2010 MFC】MFC发布release可执行程序
- QT做的tcpsocket测试工具源码及单独发布的可执行程序
- 手动实现把python项目发布为exe可执行程序过程分享
- Python:程序发布方式简介一(打包为可执行文件EXE)
- 分析现有 WPF / Windows Forms 程序能否顺利迁移到 .NET Core 3.0
- Windows7 如何发布Qt可执行程序
- Qt学习-10-Qt可执行程序的发布
- Java项目打包发布为可执行程序