.NET Core 2.0 应用程序大小减少50%
.NET Core 2.0应用程序减小体积瘦身官方工具 IL Linker。
IL Linker 来源于mono的linker https://github.com/mono/linker,目前还是预览版本。
在一般的情况下,链接器可以将应用程序的大小减少50%,大型应用程序的大小可能更有利,链接器会删除应用程序中的代码和依赖库,而这些代码不会被任何代码路径访问。它实际上是应用程序特定的无效代码分析。
下面正式开始体验
版本必须为.NET Core 2.0
新建应用
新建一个控制台应用
dotnet new console -o linkdemo
然后添加nuget.config
dotnet new nuget
接着在config 中加入 <add key="dotnet-core" value="https://dotnet.myget.org/F/dotnet-core/api/v3/index.json" /> 如下:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<!--LineZero -->
<clear />
<add key="dotnet-core" value="https://dotnet.myget.org/F/dotnet-core/api/v3/index.json" />
</packageSources>
</configuration>
添加ILLink 程序包
dotnet add package ILLink.Tasks -v 0.1.4-preview-906439
最新版本可以到https://dotnet.myget.org/feed/dotnet-core/package/nuget/Illink.Tasks 查看
发布程序
dotnet publish -c release -r <RID> -o out
- <RID> 以下值可用
win-x64
,win-x86
,linux-x64
,osx-x64
win10 包含linker的发布
dotnet publish -c release -r win10-x64 -o linker
不包含linker
dotnet publish -c release -r win10-x64 -o nolinker /p:LinkDuringPublish=false
都可以成功执行。
我们看看体积大小。
基本上减小50%以上,文件减少2/3 。
/p:LinkDuringPublish=false
- 禁用链接器。/p:ShowLinkerSizeComparison=true
- 显示应用程序大小缩小的列表。
显示程序缩小列表
dotnet publish -c release -r win10-x64 -o linker /p:ShowLinkerSizeComparison=true
真正意义上的.NET Core 瘦身。
注意事项:
- 目前只支持发布独立部署应用程序。需要指定运行时ID。
- 它目前是一个实验功能。我们打算在随后的.NET Core版本中进行支持。
- 链接仅在发布时发生,因此链接的应用程序需要在发布后进行测试,而不仅仅是在构建之后。
- 链接器将会破坏使用反射的一些应用程序。请参阅使用IL Linker高级功能。
参考文档:https://github.com/dotnet/core/blob/master/samples/linker-instructions.md
.NET Core 2.0 应用程序大小减少50%的更多相关文章
- .NET Core 2.0应用程序大小减少50%
.NET Core 2.0应用程序减小体积瘦身官方工具 IL Linker. IL Linker 来源于mono的linker https://github.com/mono/linker,目前还是 ...
- vs2015 已经支持开发asp .net core 1.0 rc2 程序了
vs2015 已经支持开发asp .net core 1.0 rc2 程序了 http://mp.weixin.qq.com/s?__biz=MzI0MzM1ODczOQ==&mid=2247 ...
- net Core 2.0应用程序发布到IIS
.net Core 2.0应用程序发布到IIS上注意事项 .net Core2.0应用程序发布window服务器报错容易错过的配置. 1.应用程序发布. 2.IIS上新建网站. 3.应用程序池选择 ...
- .net Core 2.0应用程序发布到IIS上注意事项
.net Core2.0应用程序发布window服务器报错容易错过的配置. 1.应用程序发布. 2.IIS上新建网站. 3.应用程序池选择无托管代码. 4.服务器上安装DotNetCore.1.0.1 ...
- Amazing ASP.NET Core 2.0
前言 ASP.NET Core 的变化和发展速度是飞快的,当你发现你还没有掌握 ASP.NET Core 1.0 的时候, 2.0 已经快要发布了,目前 2.0 处于 Preview 1 版本,意味着 ...
- Ubuntu & Docker & Consul & Fabio & ASP.NET Core 2.0 微服务跨平台实践
相关博文: Ubuntu 简单安装 Docker Mac OS.Ubuntu 安装及使用 Consul Consul 服务注册与服务发现 Fabio 安装和简单使用 阅读目录: Docker 运行 C ...
- Docker & Consul & Fabio & ASP.NET Core 2.0 微服务跨平台实践
相关博文: Ubuntu 简单安装 Docker Mac OS.Ubuntu 安装及使用 Consul Consul 服务注册与服务发现 Fabio 安装和简单使用 阅读目录: Docker 运行 C ...
- ASP.NET Core 2.0 新功能汇总
前言 ASP.NET Core 的变化和发展速度是飞快的,当你发现你还没有掌握 ASP.NET Core 1.0 的时候, 2.0 已经快要发布了,目前 2.0 处于 Preview 1 版本,意味着 ...
- mazing ASP.NET Core 2.0【转】
前言 ASP.NET Core 的变化和发展速度是飞快的,当你发现你还没有掌握 ASP.NET Core 1.0 的时候, 2.0 已经快要发布了,目前 2.0 处于 Preview 1 版本,意味着 ...
随机推荐
- RabbitMQ 知识总结
RabbitMQ知识总结 AMQP协议 AMQP协议是一个提供统一消息服务的应用层标准协议,并不会受到客户端/中间件不同产品.不同开发语言等条件的影响.RabbitMQ则是基于该协议实现的. 举个例子 ...
- showcase,开发中必须引起重视的小环节
有人说,测试者来自火星,开发者来自金星.这是因为软件测试员和软件开发者就好比一对冤家,里面的缘由说不清也道不明.开发代表着创造,而测试则代表着摧毁,因为测试的目的就是以各种方式不断地从开发出的产品中发 ...
- pwnable.kr leg之write up
看代码: #include <stdio.h> #include <fcntl.h> int key1(){ asm("mov r3, pc\n"); } ...
- Android Binder机制详解:手写IPC通信
想要掌握一样东西,最好的方式就是阅读理解它的源码.想要掌握Android Binder,最好的方式就是写一个AIDL文件,然后查看其生成的代码.本文的思路也是来自于此. 简介 Binder是Andro ...
- 闭包(Closure)基础分析
闭包(Closure) 本文聚焦于回答2个问题: 在全局作用域中,如何读取函数内部的局部变量? 在全局作用域中,如何修改函数内部的局部变量? 变量作用域 JavaScript语言的作用域,一句话概括就 ...
- Linux基本命令整理_sheng
Linux版本 Linux系统是一个多用户.多任务的分时操作系统. Linux版本分为内核版本和发行版本. 常见的Linux发行版有: RedHat(分为用于企业的Red Hat Enterprise ...
- Python中的re模块--正则表达式
Python中的re模块--正则表达式 使用match从字符串开头匹配 以匹配国内手机号为例,通常手机号为11位,以1开头.大概是这样13509094747,(这个号码是我随便写的,请不要拨打),我们 ...
- 《奇思妙想》在JavaScript语言中floor和round方法在某种随机分配场景下对分配区间的公平性!!!
前言 大欢哥的题目完成了,但是衍生出一个新的问题!上篇随笔中我和大欢哥采用的随机数生成方式,到底是谁的比较公平??? 正文 欢迎来到阿段博客<奇思妙想>!我们的口号是 “心有多大,bug就 ...
- 初学Python之 安装包的抉择~~
上面的都是windows系统平台的安装包,哇,有没有后宫三千,不知道"临幸"哪一个的感觉~.~ 看了下面的你就明白啦. 毫无疑问,x86适合32位操作系统:x86-64适合64位操 ...
- git版本控制 for window安装和命令行使用
Git 安装配置 Windows 平台上安装 在 Windows 平台上安装 Git 同样轻松,有个叫做 msysGit 的项目提供了安装包,可以到 GitHub 的页面上下载 exe 安装文件并运行 ...