.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 版本,意味着 ...
随机推荐
- django 表单提交 post 、get
介绍 : django项目开发必须懂的知识点,下面使用的数据库是mysql , models.py 数据库表结构, # -*- coding: utf-8 -*-from __future__ im ...
- 函数响应式编程及ReactiveObjC学习笔记 (四)
今天我们继续看其他的类别 UIImagePickerController+RACSignalSupport.h #import <UIKit/UIKit.h> @class RACDele ...
- css 为元素选择器,css目标状态伪类,结构化选择器,多媒体选择器,清除表默认样式、属性选择器
伪元素选择器 :before 和 :after 添加的位置 :before --- 第一个子节点 :after --- 最后一个子节点 特点 1.默认是 inline 元素 2.必须包含 conten ...
- python3网络编程之socketserver
本节主要是讲解python3网络编程之socketserver,在上一节中我们讲到了socket.由于socket无法支持多用户和多并发,于是就有了socket server. socket serv ...
- ajax访问controller,无法通过return $this->goHome()跳转
第一次在yii2中使用ajax来请求controller,做的是第三方登录,facebook和google登录. 登录成功应该跳转到首页,想当然的以为用return $this->goHome( ...
- maven快速上手
1.maven安装 首先下载apache-maven-3.3.3-bin.zip(版本可以自己根据自己想要的下载). 解压后如下: 接下来配置系统环境变量: 到此,maven安装好了,接下来输入 ...
- SSE再学习:灵活运用SIMD指令6倍提升Sobel边缘检测的速度(4000*3000的24位图像时间由180ms降低到30ms)。
这半年多时间,基本都在折腾一些基本的优化,有很多都是十几年前的技术了,从随大流的角度来考虑,研究这些东西在很多人看来是浪费时间了,即不能赚钱,也对工作能力提升无啥帮助.可我觉得人类所谓的幸福,可以分为 ...
- Handler实现线程之间的通信-下载文件动态更新进度条
1. 原理 每一个线程对应一个消息队列MessageQueue,实现线程之间的通信,可通过Handler对象将数据装进Message中,再将消息加入消息队列,而后线程会依次处理消息队列中的消息. 2. ...
- 求m区间内的最小值
洛谷P1440 求m区间内的最小值 ............................................................................... 以上 ...
- 带有WS-Security验证的webservice
示例用的是spring+CXF来配置webservice 首先是web.xml配置,将spring,CXF的配置文件加载进去,由于我客户端跟服务端在同一个工程里面,所以配置文件在一块. <con ...