当前位置:网站首页>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
边栏推荐
- Learning and Exploration-Introducing Baidu Statistics to the Website
- R语言dplyr包group_by函数和summarise_at函数计算dataframe计算不同分组的计数个数和均值、使用%>%符号将多个函数串起来
- 网页端IM即时通讯开发:短轮询、长轮询、SSE、WebSocket
- leetcode/有效的回文串,含有不需要判断回文的字符
- 如何模拟后台API调用场景,很细!
- php如何查询字符串以什么开头
- 电源测试系统-ATE电源测试系统-ACDC电源模块测试系统NSAT-8000
- clickhouse online and offline table
- leetcode 14. 最长公共前缀
- Error when using sourcemap for reporting an error: Can‘t resolve original location of error.
猜你喜欢

Catering Supply Chain Management System

Understand Chisel language. 32. Chisel advanced hardware generator (1) - parameterization in Chisel

JWT主动校验Token是否过期

《机器学习的随机矩阵方法》

yarn detailed introductory tutorial

基于大学生内卷行为的调查研究

小程序笔记3

leetcode 13. 罗马数字转整数

下一代 AutoAI:从模型为中心,到数据为中心

CAS:474922-26-4,DSPE-PEG-NH2,DSPE-PEG-amine,磷脂-聚乙二醇-氨基供应
随机推荐
hi, 请问下这是什么问题, 我看官网的example就是mysql的, 咋提示不支持?
《机器学习的随机矩阵方法》
Introduction of three temperature measurement methods for PT100 platinum thermal resistance
我的大一.
2022年五一数学建模C题讲解
启动项目(瑞吉外卖)
最小区间覆盖
关于大学生内卷的文献综述
How to make JS code unbreakable
leetcode 14. 最长公共前缀
LeetCode Question of the Day - 1403. Minimum Subsequence in Non-Increasing Order
NLP未来,路在何方?从学术前沿和业界热点谈起
88. (the home of cesium) cesium polymerization figure
Matlab画图1
软件测试高频面试题真实分享/网上银行转账是怎么测的,设计一下测试用例。
2022年7月31日 暑假第三周总结
又一款高颜值 Redis 官方可视化工具,功能真心强大!
信息系统项目管理师必背核心考点(六十)项目集管理
44. 通配符匹配 ●●● & HJ71 字符串通配符 ●●
init和destory方法