.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 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 ho ...

  2. jquery 的鼠标事件/淡入淡出/绑定

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  3. Web Penetration Testing w3af fierce

    1.启动wsaf工具,设置载入插件(攻击模型的插件),可以设置默认的攻击模型,也可以添加自己的plug. 2.在侦查的时候渗透邮箱需要知道,云行邮箱服务的托管服务器是什么类型,在之前的博客中我已近两提 ...

  4. java----String解析

    String在内存中的分析: public class Demo { public static void main(String[] args){ String a = new String(&qu ...

  5. uva11827 处理下输入

    /*0.012s*/ #include<cstdio> #include<algorithm> using namespace std; ], n; int gcd(int a ...

  6. cf1107d 映射关系

    #include<bits/stdc++.h> using namespace std; ][]; int judge(int i){ ;j<=n;j++) ][j]); ; } i ...

  7. CHENGDU1-Python编程语言和PEP8规范

    CHENGDU1-Python编程语言和PEP8规范 PEP8规范6条? 答:PEP8规范说白了就是一种规范,可以遵守,也可以不遵守,遵守PEP8可以让代码的可读性更高. 代码编排:---缩进,4个空 ...

  8. spring cloud config--client

    概述 之前我们简单的搭建了一个单点的config-server服务,实现配置文件的统一管理,本次文章将实现config-client是如何从config-server中获取到统一配置文件信息的 1.创 ...

  9. 饮冰三年-人工智能-linux-04 vim编辑器

    vim的三种模式:命令行模式.编辑模式.扩展模式 1:命令行模式下常见的操作 删除 a):dd 删除光标所在当前行 b):ndd   删除光标所在当前行后的n行 复制 c):yy 复制光标所在当前行 ...

  10. 金蝶核算项目余额表卡号余额与天财商龙CRM卡号余额对比

    金蝶核算项目余额表卡号余额与天财尚龙CRM卡号余额对比 由于历史遗留问题,财务一直不调账,修改核算科目卡号与天财商龙CRM系统一直,只能用VBA把卡号前缀修改成两边一致. 再通过,Power BI D ...