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

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

内容简介:本文整理我和本文服务于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)


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

查看所有标签

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

正则表达式必知必会(修订版)

正则表达式必知必会(修订版)

福达 (Ben Forta) / 杨涛 / 人民邮电出版社 / 2015-1-1 / 29.00元

《正则表达式必知必会》从简单的文本匹配开始,循序渐进地介绍了很多复杂内容,其中包括回溯引用、条件性求值和前后查找,等等。每章都为读者准备了许多简明又实用的示例,有助于全面、系统、快速掌握正则表达式,并运用它们去解决实际问题。正则表达式是一种威力无比强大的武器,几乎在所有的程序设计语言里和计算机平台上都可以用它来完成各种复杂的文本处理工作。而且书中的内容在保持语言和平台中立的同时,还兼顾了各种平台之......一起来看看 《正则表达式必知必会(修订版)》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

MD5 加密
MD5 加密

MD5 加密工具