.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-x64win-x86linux-x64osx-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%的更多相关文章

  1. .NET Core 2.0应用程序大小减少50%

    .NET Core 2.0应用程序减小体积瘦身官方工具 IL Linker. IL Linker 来源于mono的linker  https://github.com/mono/linker,目前还是 ...

  2. vs2015 已经支持开发asp .net core 1.0 rc2 程序了

    vs2015 已经支持开发asp .net core 1.0 rc2 程序了 http://mp.weixin.qq.com/s?__biz=MzI0MzM1ODczOQ==&mid=2247 ...

  3. net Core 2.0应用程序发布到IIS

    .net Core 2.0应用程序发布到IIS上注意事项   .net Core2.0应用程序发布window服务器报错容易错过的配置. 1.应用程序发布. 2.IIS上新建网站. 3.应用程序池选择 ...

  4. .net Core 2.0应用程序发布到IIS上注意事项

    .net Core2.0应用程序发布window服务器报错容易错过的配置. 1.应用程序发布. 2.IIS上新建网站. 3.应用程序池选择无托管代码. 4.服务器上安装DotNetCore.1.0.1 ...

  5. Amazing ASP.NET Core 2.0

    前言 ASP.NET Core 的变化和发展速度是飞快的,当你发现你还没有掌握 ASP.NET Core 1.0 的时候, 2.0 已经快要发布了,目前 2.0 处于 Preview 1 版本,意味着 ...

  6. Ubuntu & Docker & Consul & Fabio & ASP.NET Core 2.0 微服务跨平台实践

    相关博文: Ubuntu 简单安装 Docker Mac OS.Ubuntu 安装及使用 Consul Consul 服务注册与服务发现 Fabio 安装和简单使用 阅读目录: Docker 运行 C ...

  7. Docker & Consul & Fabio & ASP.NET Core 2.0 微服务跨平台实践

    相关博文: Ubuntu 简单安装 Docker Mac OS.Ubuntu 安装及使用 Consul Consul 服务注册与服务发现 Fabio 安装和简单使用 阅读目录: Docker 运行 C ...

  8. ASP.NET Core 2.0 新功能汇总

    前言 ASP.NET Core 的变化和发展速度是飞快的,当你发现你还没有掌握 ASP.NET Core 1.0 的时候, 2.0 已经快要发布了,目前 2.0 处于 Preview 1 版本,意味着 ...

  9. mazing ASP.NET Core 2.0【转】

    前言 ASP.NET Core 的变化和发展速度是飞快的,当你发现你还没有掌握 ASP.NET Core 1.0 的时候, 2.0 已经快要发布了,目前 2.0 处于 Preview 1 版本,意味着 ...

随机推荐

  1. Linux编译安装程序(使用configure、make、 make install)

    以安装vim为例. (vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面). 1.获取源文件 首先进入/usr/local下(只是为了方便处理安装文件,位置随意) 用git ...

  2. 导航栏使用UIButton自定义返回按钮的图片

    - (void)viewDidLoad { UIButton *backItem = [UIButton buttonWithType:UIButtonTypeCustom]; UIBarButton ...

  3. 【附答案】Java 大数据方向面试题,你会几个?

    1.Collection 和 Collections的区别.   Collections是个java.util下的类,它包含有各种有关集合操作的静态方法.   Collection是个java.uti ...

  4. 主流页面编辑器比对:TinyMCE VS FCKeditor

    开发中先用的是 FCKeditor 编辑器,感觉页面展示的东西太繁琐,所以换了 TinyMCE 编辑器. 为了方便理解,本文不采用穿插比对 先看 FCKeditor : 1.jsp :结束标签不能贴着 ...

  5. 双向lstm-crf源码的问题和细微修改

    别人的源码地址:https://github.com/chilynn/sequence-labeling/ 如果你训练就会发现loss降到0以下,按照他设定的目标函数,loss理论上应该是大于0的,仔 ...

  6. NYOJ--241--字母统计

    /* Name: NYOJ--241--字母统计 Date: 18/04/17 17:12 Description: 水过,C++11特性不能用,尴尬 */ #include<bits/stdc ...

  7. Head First 设计模式 第5章 单例模式

    第5章 单例模式 1.定义:确保一个类只有一个实例,并为其创建访问点. 2.单例模式的类图: 对应的单例模式的代码: package com.ek.singleton; /** * @包名 com.e ...

  8. WordCount去除标点方法之一

    package com.bw.day10;import java.io.IOException;import java.util.StringTokenizer;import org.apache.h ...

  9. hadoop搭建在Ubuntu16.04上

    一.环境 Ubuntu16.04.Hadoop2.7.3.java8 系统安装完成后建议先更新一下 apt源 1.复制原文件备份 sudo cp /etc/apt/source.list /etc/a ...

  10. Luogu P1576 最小花费

    题目背景 题目描述 在n个人中,某些人的银行账号之间可以互相转账.这些人之间转账的手续费各不相同.给定这些人之间转账时需要从转账金额里扣除百分之几的手续费,请问A最少需要多少钱使得转账后B收到100元 ...