.NET Core 最小化发布
.NET Core 应用最小化独立部署发布,.NET Core 默认应用独立发布,大概占用50m左右的空间,不同的系统大小有所区别。
.NET Core 的发布之前我也有所介绍,.NET Core 跨平台发布(dotnet publish) 具体可以看这篇文章。
今天来看看.NET Core 最小化发布部署,可以节省一半左右的空间。
使用 dotnet new 命令创建应用
然后打开 project.json 文件,然后将 frameworks 部分替换为以下内容:
"frameworks": {
"netstandard1.6": {}
},
这有两个用途:
它表示应用只使用 .NET 标准库。
删除 "type": "platform" 属性即表示将框架作为一套本地组件提供给应用,而不是作为系统范围内的平台包。
接着将 dependencies 部分替换为以下内容:
"dependencies": {
"NETStandard.Library": "1.6.0",
"Microsoft.NETCore.Runtime.CoreCLR": "1.0.2",
"Microsoft.NETCore.DotNetHostPolicy": "1.0.1"
},
接着创建 runtimes 部分,然后指定该应用作为目标的每个平台的运行时标识符。 以下 runtimes 为 win10 64位 以及 ubuntu14.04 64位。
"runtimes": {
"win10-x64": {},
"ubuntu.14.04-x64":{}
}
然后运行 dotnet restore 命令,以还原项目中指定的依赖项。
还原好以后运行dotnet publish 命令发布对应系统版本的应用。
dotnet publish -r win10-x64
dotnet publish -r ubuntu.14.04-x64
也可增加 -c Release 指定为发布版本,如:dotnet publish -c Release -r win10-x64
如未指定Release ,默认在Debug 目录下。
下图左边为最小化发布,右边是正常发布,都可以正常运行。

将对应标识下的publish 文件夹复制到对应系统,即可运行。
完整 project.json 文件如下。
{
"version": "1.0.0-*",
"buildOptions": {
"debugType": "portable",
"emitEntryPoint": true
},
"dependencies": {
"NETStandard.Library": "1.6.0",
"Microsoft.NETCore.Runtime.CoreCLR": "1.0.2",
"Microsoft.NETCore.DotNetHostPolicy": "1.0.1"
},
"frameworks": {
"netstandard1.6": {}
},
"runtimes": {
"win10-x64": {},
"ubuntu.14.04-x64":{}
}
}
经过探索,如果只是默认控制台输出还可以减少体积,将 NETStandard.Library 引用替换为具体的引用,不过这个没有多大必要。
更小化:
"dependencies": {
"System.Runtime":"4.1.0",
"System.Console":"4.0.0",
"Microsoft.NETCore.Runtime.CoreCLR": "1.0.2",
"Microsoft.NETCore.DotNetHostPolicy": "1.0.1"
},
此方法对ASP.NET Core 同样可以,需要注意的是,如果项目引用了相关工具,需要自己做调整。
如果你觉得本文对你有帮助,请点击“推荐”,谢谢。
.NET Core 最小化发布的更多相关文章
- 最小化安装k8s
最小化安装k8s Nick_4438 关注 2018.07.11 10:40* 字数 670 阅读 0评论 0喜欢 0 1.前言 之前写过一篇二进制手工安装k8s的文章,过程复杂,搞了多日才安装成功. ...
- 译 .NET Core 3.0 发布
原文:<Announcing .NET Core 3.0> 宣布.NET Core 3.0 发布 很高兴宣布.NET Core 3.0的发布.它包括许多改进,包括添加Windows窗体和W ...
- 生产服务器环境最小化安装后 Centos 6.5优化配置[转]
内容目录 centos6.5最小化安装后配置网络: IP地址, 网关, 主机名, DNS 更新系统源并且升级系统 系统时间更新和设定定时任 创建普通用户并进行sudo授权管理 修改SSH端口号和屏蔽r ...
- 安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情(五)
25. 安装 Linux Malware Detect (LMD) Linux Malware Detect (LMD) 是 GNU GPLv2 协议下发布的开源 Linux 恶意程序扫描器,它是特别 ...
- centos7 最小化安装 无 ifconfig,netstat 的安装
centos7 最小化安装 无 ifconfig,netstat 的安装 centos7 最小化安装之后,默认是没有 ifconfig,netstat命令的: 我们可以直接使用 yum -y inst ...
- 【CentOS如何最小化安装】
近来发现越来越多的运维小伙伴们都有最小化安装系统的洁癖,因此,找老男孩来咨询,这个"洁癖"好习惯啊,必须支持,,因此发布本文和大家分享下. (1)系统安装类型选择及自定义额外包组 ...
- Effective Java 第三版——15. 使类和成员的可访问性最小化
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...
- Effective Java 第三版——17. 最小化可变性
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...
- Centos7VMware虚拟机最小化安装后,安装Tenda U12 USB无线网卡驱动
前几天买下了Tenda U12 USB 无线网卡 ,想连接上无线玩玩,可惜买下折腾了一周才解决他它驱动问题,前后在VMware上装了十多次,测试了好几个内核版本才搞定,好了废话不多说,分享下我安装过程 ...
随机推荐
- php 语法中有 let 吗?
来源:http://stackoverflow.com/questions/9705281/with-and-let-in-php use(&$a) 用 use ($parameter) 这种 ...
- (中等) POJ 1191 棋盘分割,DP。
Description 将一个8*8的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的部分继续如此分割,这样割了(n-1)次后,连同最后剩下的矩形棋盘共有n块矩形棋盘.(每次 ...
- shell vim--处理二进制文本
1 使用vim -b :%!xxd 参考:http://www.cnblogs.com/killkill/archive/2010/06/23/1763785.html 2 使用xxd命令 htt ...
- 仿复制粘贴功能,长按弹出tips的实现
方案分析: 方案一:监听长按事件弹出PopupWindow[可行,缺点布局是固定的,小语种下会出现菜单截断现象] 方案二:弹出ContextMenu[不可行,因为ContextMenu的菜单是上下排列 ...
- STM32驱动DS18B20
DS18B20 是由 DALLAS 半导体公司推出的一种的“一线总线”接口的温度传感器.与传 统的热敏电阻等测温元件相比,它是一种新型的体积小.适用电压宽.与微处理器接口简单的 数字化温度传感器.一线 ...
- UIAlertController高级之嵌入其他控件
在编码过程中,我们经常遇到需要这样一个效果,就是弹出框的嵌套; 举个最简单的例子,比如你要选择时间,必然需要一个时间选择器DatePicker.但是这个选择器又是在你点击某按钮时弹出,弹出方式最常见的 ...
- innodb系统表空间维护
环境说明: 有一个在运行中的mysql环境,由于之前的配置文件设置的过于简单(没有配置innodb_data_file_path变更):造成现在系统表空间已经满了 如果innodb_data_file ...
- leetcode-006 detect cycle
package leetcode; public class DetectCycle { public ListNode detectCycle(ListNode head) { ListNode s ...
- SSH报错分析
排错设计思路 1.配置文件的端口号修改 2.禁用root 3./etc/hosts.allow /etc/hosts.deny 4.iptables 5.密钥文件及目录的权限修改 1. 报错的原因:是 ...
- nginx 判断访问文件或目录不存在rewrite
文件及目录匹配,其中:* -f和!-f用来判断是否存在文件* -d和!-d用来判断是否存在目录* -e和!-e用来判断是否存在文件或目录* -x和!-x用来判断文件是否可执行样例 : 判断访问的图片是 ...