当前位置:网站首页>dotnet core 使用 CoreRT 将程序编译为 Native 程序
dotnet core 使用 CoreRT 将程序编译为 Native 程序
2022-08-04 17:47:00 【林德熙】
现在微软有一个开源项目 CoreRT 能通过将托管的 .NET Core 编译为单个无依赖的 Native 程序 这个项目现在还没发布,但是能尝试使用,可以带来很多的性能提升
使用 CoreRT 发布的优点:
- 只有一个 exe 文件,是绿色没有依赖
- 发布的文件的大小很小,对比 dotnet core 的独立发布 50M 的大小会小很多
- 能在大多数的系统运行
- 提高很多启动性能
不足是软件不是非常稳定,同时只能支持x64的程序
使用这个项目是比较难的,本文下面提供的包的版本,请大家按照我的安装的版本使用,因为新的版本可能有一些修改,同时没有更新文档,如果是第一次使用,可能会遇到很多坑。
首先打开 VisualStudio 2017 安装 C++ 依赖,虽然现在已经有了 VisualStudio 2019 了,但是 C++ 的依赖是需要和 VS 的版本关系,所以这里暂时不能使用 VisualStudio 2019 安装
点击 Nuget 源设置,在 VisualStudio 的工具->选项->nuget包管理器->nuget包源里面添加 myget 的使用,这个网站是微软的 CI 输出的,里面大量的库都是没有发布的,所以微软也无法保证这些库稳定
添加一个新的源,路径是 https://dotnet.myget.org/F/dotnet-core/api/v3/index.json 可以通过 dotnet new nuget
创建配置文件,在配置文件添加下面代码,这样就可以不在全局添加这个链接
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="dotnet-core" value="https://dotnet.myget.org/F/dotnet-core/api/v3/index.json" />
</packageSources>
</configuration>
这个黑科技请看 VisualStudio 给项目添加特殊的 Nuget 的链接
通过 VisualStudio 2017 创建一个新的控制台项目,或者通过命令行使用 dotnet 命令行创建一个新的控制台项目
然后在项目里面添加 Microsoft.DotNet.ILCompiler 的引用,这里添加的版本是 1.0.0-alpha-*
版本
<ItemGroup>
<PackageReference Include="Microsoft.DotNet.ILCompiler" Version="1.0.0-alpha-*" />
</ItemGroup>
也就是在 1.0.0 的任意版本都会被添加,我实际使用的是 1.0.0-alpha-27401-01 版本
现在尝试写一个 Hellow 程序,使用命令行发布,注意创建的项目的 dotnet core sdk 版本暂时需要是 2.0 的版本
dotnet publish -r win-x64 -c release
注意暂时只能发布 x64 的程序,对 x86 暂时没有支持
现在可以发现发布的文件夹里面有 native 文件夹,里面就只包含一个 exe 程序,同时这个文件也非常小
代码请看 https://github.com/dotnet/corert/tree/master/samples/HelloWorld
边栏推荐
- 怎么招聘程序员
- Error when using sourcemap for reporting an error: Can‘t resolve original location of error.
- Understand Chisel language. 32. Chisel advanced hardware generator (1) - parameterization in Chisel
- 语音识别学习资源
- DMPE-PEG-Mal,二肉豆蔻酰磷脂酰乙醇胺-聚乙二醇-马来酰亚胺简述
- codeforces每日5题(均1600)-第二十八天
- 【web自动化测试】Playwright快速入门,5分钟上手
- Thrift IDL示例文件
- 【 Gazebo introductory tutorial] speak the second model library into robot modeling and visualization (editor) model
- darknet source code reading notes-02-list.h and lish.c
猜你喜欢
JS兼容问题总结
Thrift IDL Sample File
】 【 LeetCode daily one problem - 540. The order of a single element of the array
从-99打造Sentinel高可用集群限流中间件
谷歌开源芯片 180 纳米制造工艺
学习探索-网站中引入百度统计
字节二面被问到mysql事务与锁问题,我蚌埠住了
对象实例化之后一定会存放在堆内存中?
DSPE-PEG-DBCO,DBCO-PEG-DSPE,磷脂-聚乙二醇-二苯并环辛炔科研实验用
【LeetCode Daily Question】——374. Guess the size of the number
随机推荐
基于clipboard.js对复制组件的封装
微信jsApi调用失效的相关问题
Cholesterol-PEG-DBCO,CLS-PEG-DBCO,胆固醇-聚乙二醇-二苯基环辛炔科研试剂
电源测试系统-ATE电源测试系统-ACDC电源模块测试系统NSAT-8000
如何让 JS 代码不可断点
OpenInfra Days China 2022|SelectDB与你共享 Apache Doris 在互联网广告业务中的实践
离散化求前缀和
LeetCode 899. Ordered Queues
leetcode/含有所有字符的最短字符串
小程序经典案例
小程序笔记1
使用bash语句,清空aaa文件夹下的所有文件
(一)、线性表的顺序存储结构链式存储结构
华为云计算HCIE之oceanstor仿真器的安装教程
悦刻难回巅峰
【日记】mysql基本操作
js函数传参是按值传递还是按引用传递?
R语言ggpubr包的ggtexttable函数可视化表格数据(直接绘制表格图或者在图像中添加表格数据)、使用ggarrange函数将表格数据和可视化图像组合起来(表格数据在可视化图像下方)
Clearance sword refers to Offer——The sword refers to Offer II 010. and the sub-array of k
小程序学习目标