.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. Confluence 6 查看索引和提示

    查看索引 Confluence 使用被称为 Lucene 的搜索引擎.如果你希望在你的 Confluence站点中查看更多有关索引的细节,你可以下载并且运行 Luke.Luke 是一个开发和诊断工具, ...

  2. django配置一个网站建设

    第一步: 安装数据库MySQL,也可以使用pycharm自带的数据库sqllite,大项目要使用数据库.安装请参考上篇. 数据库在pycharm中驱动设置,setting文件中修改驱动文件密码等信息. ...

  3. java----面对对象

    面对对象: public class Demo { public static void main(String[] args){ Horse h = null; h = new Horse(); / ...

  4. java----java工具类

    System: Runtime: Random: Scanner: Arrays: MessageFormat: Math: 日期: Comparable: cloneable接口: 数字处理: MD ...

  5. 性能测试四十八:Jenkins+Ant+Jmeter系统部署

    工作步骤: 1.开发提交代码SVN/Git 2.代码编译.打war包 3.上传war包到服务器 4.重启web服务器 5.开始测试/自动化测试 6.发测试结果 Jenkins工作: 1.开发提交代码G ...

  6. Axure之全局变量

    ****全局变量*****1.定义:变量是一个数据的容器,是一个字符串,可设置默认值:2.功能:两个功能:读.写3.特点:随时随地可以对变量进行读和写,不限页面.也就是在不同的页面也可以访问同一个全局 ...

  7. Python函数系列之eval()

    1.作用:将字符串str当成有效的表达式来求值并返回计算结果. 2.语法:eval(source[, globals[, locals]])  3.说明:参数:source:一个Python表达式或函 ...

  8. VUE,页面跳转传多个参数

    <template> <a @click="goNext">Next</a> <input type="text" v ...

  9. 我的第一个Java程序和Java简介

    public calss HelloWorld{ public static void main(String[] args){ System.out.println("Hello Worl ...

  10. alpha冲刺6/10

    目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:感恩节~ 团队部分 后敬甲(组长) 过去两天完成了哪些任务 文字描述 设计了拍照界面和图片上传界面 沟通了前端进度 接下 ...