从零开始学习 dotnet 编译过程和 Roslyn 源码分析

栏目: ASP.NET · 发布时间: 5年前

内容简介:本文整理我和本文服务于SourceYard 通过将公共组件的源代码和产品源代码合并来提升性能。

本文整理我和 林德熙 学习的 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 等的额外博客:

本文会经常更新,请阅读原文: https://walterlv.com/post/posts-for-learning-dotnet-build-nuget-roslyn.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

从零开始学习 dotnet 编译过程和 Roslyn 源码分析 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接:https://walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 (walter.lv@qq.com)


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

琢石成器

琢石成器

罗云彬 / 电子工业出版社 / 2009-6 / 89.00元

Windows环境下32位汇编语言是一种全新的编程语言。它使用与C++语言相同的API接口,不仅可以开发出大型的软件,而且是了解操作系统运行细节的最佳方式。 本书从编写应用程序的角度,从“Hello,World!”这个简单的例子开始到编写多线程、注册表和网络通信等复杂的程序,通过70多个实例逐步深入Win32汇编语言编程的方方面面。 本书作者罗云彬拥有十余年汇编语言编程经验,是汇编编程......一起来看看 《琢石成器》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具