nuget的原理_从零开始学习 dotnet 编译过程和 Roslyn 源码分析
本文整理我和 林德熙 学习的 dotnet 编译知识、Roslyn 源码分析知识,NuGet 知识。通过阅读本文可以从零散的碎片化博客中得到从零开始学习的轨迹。
本文服务于 微软技术暨生态大会 2018 课程 ,你可以学习预编译框架相关的技术原理。
SourceYard 性能数据
SourceYard 通过将公共组件的源代码和产品源代码合并来提升性能。
以下是这部分的性能数据:
不过,程序集中的类的数量对启动性能没有影响:
SourceFusion 性能数据
SourceFusion 的其中一个用途是收集原本会通过反射收集的类型信息。
以下是这部分的性能数据:
额外的,如果不是收集而单单只是使用的话,这里是性能数据:
dotnet build 基础
你需要先了解 csproj 文件的结构,以便进行后续的学习:
在了解到 csproj 文件结构之后,你可以通过迁移一些项目,并确保他们编译通过来练习:
接着,csproj 中的重要内容 Target 对理解编译过程非常重要,因为它决定了如何编译这个项目:
更高级的 Target 用法:
基于 Target 的一些应用:
当现有的知识和文档不足以帮助你完成现有功能的时候,也许你该考虑阅读官方源码了:
还有一些 csproj 特性的使用:
NuGet 基础
可以使用 NuGet 做一些不是传统 dll 引用的功能:
现在,我们需要真的使用 NuGet 做一个自己的 工具 了:
NuGet 的坑很多,有些可以解,有些需要规避:
如果你的 NuGet 格式是旧的,或者说引用方式是旧的,推荐升级:
学会这些 NuGet 技能之后的一些应用:
SourceYard 原理
SourceYard 利用 NuGet 自动 Import 的 Target 来执行我们的代码:
Roslyn 基础
Roslyn 由于其丰富且易用的 API,所以入门是比较容易的。推荐的入门文章有:
额外的,你可以 Roslyn 的资料以便快速应用于你的项目:
Roslyn 为何能够在提供如此友好的 API 的情况下依然有如此高的性能?
一些 Roslyn 的额外功能:
SourceFusion 预编译框架
关于预编译框架的博客没有那么多,只有一些基本的使用:
扩展阅读
这里是是用到了 csproj / NuGet 等的额外博客:
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接:https://walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 (walter.lv@qq.com) 。
nuget的原理_从零开始学习 dotnet 编译过程和 Roslyn 源码分析相关推荐
- 10年大厂程序员是如何高效学习使用redis的丨redis源码分析丨redis存储原理
10年大厂程序员是怎么学习使用redis的 1. redis存储原理分析 2. redis源码学习分享 3. redis跳表和B+树详细对比分析 视频讲解如下,点击观看: 10年大厂程序员是如何高效学 ...
- Netty网络框架学习笔记-16(心跳(heartbeat)服务源码分析)
Netty网络框架学习笔记-16(心跳(heartbeat)服务源码分析_2020.06.25) 前言: Netty 作为一个网络框架,提供了诸多功能,比如编码解码等,Netty 还提供了非常重要的一 ...
- Ui学习笔记---EasyUI的EasyLoader组件源码分析
Ui学习笔记---EasyUI的EasyLoader组件源码分析 技术qq交流群:JavaDream:251572072 1.问题1:为什么只使用了dialog却加载了那么多的js http: ...
- tomcat源码分析_百战卓越108天tomcat和servlet源码分析
训练大纲(第105天) 大家如果想快速有效的学习,思想核心是"以建立知识体系为核心",具体方法是"守破离".确保老师课堂上做的操作,反复练习直到熟练. 第209 ...
- libevent c++高并发网络编程_【多线程高并发编程】Callable源码分析
程序猿学社的GitHub,欢迎Starhttps://github.com/ITfqyd/cxyxs 本文已记录到github,形成对应专题. 前言 通过上一章实现多线程有几种方式,我们已经了解多线程 ...
- (转)Bootstrap 之 Metronic 模板的学习之路 - (2)源码分析之 head 部分
https://segmentfault.com/a/1190000006684122 下面,我们找个目录里面想对较小的文件来分析一下源码结构,我们可以看到,page_general_help.htm ...
- 《游戏学习》| 微信蜘蛛侠动作游戏源码分析
整个游戏源码是由html.js. css.图片等代码完成的,无后端数据保存功能. 代码结构 js文件夹是游戏事件控制文件 vapp文件夹是游戏图片文件 icon.png 是网页游戏图标 index.h ...
- mq消费者组_「架构师MQ进阶」RocketMQ源码分析(四)- 源代码包结构分析
在前面第一篇中已经将源代码下载到本地了,本篇主要是介绍代码中相关模块到作用.036.Rocket-MQ-Source-code-cover.png 一.源码结构 RocketMQ源码组织方式基于Mav ...
- docker ip地址_理解 Docker 网络(番外) -- 《Docker 源码分析》勘误
前言 本来打算这篇文章是分析 Docker Overlay 网络是如何建立以及如何手动实现 Docker 的跨主机通信的.但是在完成了上一篇文章之后,打算找一些文章或者书籍印证我的文章是否正确.这时看 ...
- (转)Bootstrap 之 Metronic 模板的学习之路 - (4)源码分析之脚本部分
https://segmentfault.com/a/1190000006709967 上篇我们将 body 标签主体部分进行了简单总览,下面看看最后的脚本部门. 页面结尾部分(Javascripts ...
最新文章
- Confluence 6 开始使用
- 算法训练 猴子分苹果c语言,算法训练 猴子分苹果
- Excel里如何更改坐标轴起始位置使图落在正中心
- Java网络编程之IP地址
- System76 是如何打造开源硬件的
- 防止孩子使用计算机的软件,如何防止熊孩纸在电脑里乱装软件
- Kafka从上手到实践 - 实践真知:搭建单机Kafka | 凌云时刻
- 最大功率跟踪mppt
- 使用Hash表时,针对Hash冲突的几个常见解决办法
- 总管家云CRM 解除业务员的后顾之忧
- Java实现论坛系统
- c语言rank函数使用实例,rank函数实例(1)
- Qt下载安装教程,windows10亲测可用,版本5.12.11
- html 制作人物模型,玩家制作《辐射4》人物模型图 惊艳无比让人叹服
- docker-compose启动hyperf项目
- 云计算对传统软件工程的影响
- linux启用dcb步骤,DCB文件擴展名: 它是什麼以及如何打開它?
- 抖音如何找到博主视频推广?筛选博主要看那些数据
- android中级开发师必备_【招聘】Android开发工程师 – 中级 – 陌陌
- vue-seamless-scroll 点击click失效
热门文章
- [js方法pk]之instanceof() vs isPrototypeOf() hasOwnProperty() vs propertyIsEnumerable()
- HQL左外连接及排序
- 基于Windows Azure 搭建基于SharePoint 2010 Intranet、Extranet、Internet (2): 创建并发布SharePoint Intranet站点...
- html 伪元素原理,CSS伪类伪元素详解
- SpringBoot整合RabbitMQ之Fanout Exchange扇形(广播式)交换机(学习总结)
- Java中String、StringBuffer和StringBuilder的区别和堆栈内存分配
- 在线班课程-第10周 http基础知识、nginx网站服务
- Nero Burning Rom v7.2.3.2b 简体中文版
- yum grouplist 安装gnome桌面环境
- 第二课:电场与偶极子