Roslyn 入门
文章平均质量分 94
开源的新一代 .NET 编译器 Roslyn
https://github.com/dotnet/roslyn
当你准备好使用强大的 Roslyn 编译器时,一切就此开始
walter lv
这个作者很懒,什么都没留下…
展开
-
在 Roslyn 分析语法树时添加条件编译符号的支持
我们在代码中会写 #if DEBUG 或者 [Conditional("DEBUG")] 来使用已经定义好的条件编译符号。而定义条件编译符号可以在代码中使用 #define WALTERLV 来实现,也可以通过在项目属性中设置条件编译符号(Conditional Compilation Symbols)来实现。然而如果我们没有做任何特殊处理,那么使用 Roslyn 分析使用了条件编译符号的源码时...原创 2019-01-01 11:01:04 · 711 阅读 · 0 评论 -
Visual Studio 2017 以前的旧格式的 csproj Import 进来的 targets 文件有时不能正确计算属性(PropertyGroup)和集合(ItemGroup)
我在之前的博客中有教大家如何编写 NuGet 工具包,其中就有编写 .targets 文件。我在实际的使用中,发现 Visual Studio 2017 带来的含 Sdk 的新 csproj 格式基本上没有多少坑;然而旧的 csproj 文件却总是不能完美的运行,总是出错。关键是,不是每台电脑都出错,不是每个时机都出错。本文将讲一些坑。本文内容本文的前置知识问题原因解决办法衍生知识本文的...原创 2018-12-23 15:16:54 · 1322 阅读 · 0 评论 -
预编译框架,开发高性能应用 - 课程 - 微软技术暨生态大会 2018
微软技术暨生态大会(Tech Summit),2018 年在上海世博中心召开。这是最后一次的 Tech Summit 了;明年开始,中国大陆地区就要和其他国家和地区一样,进行全球 Ignite Tour 了。我也有幸成为分会场讲师团队的一员,课程是《预编译框架 - 开发高性能应用》。内容就是我博客中与 MSBuild / Roslyn / dotnet / NuGet 相关的内容;我们将利用这些...原创 2018-10-15 08:45:47 · 845 阅读 · 0 评论 -
都是用 DllImport?有没有考虑过自己写一个 extern 方法?
你做 .NET 开发的时候,一定用过 DllImport 这个特性吧,这货是用于 P/Invoke (Platform Invoke, 平台调用) 的。这种 DllImport 标记的方法都带有一个 extern 关键字。那么有没有可能我们自己写一个自己的 extern 方法呢?答案是可以的。本文就写一个这样的例子。DllImport日常我们的平台调用代码是这样的:...原创 2018-09-09 10:10:07 · 1353 阅读 · 0 评论 -
理解 Roslyn 中的红绿树(Red-Green Trees)
Roslyn 的 API 是非常易用的。即便如此复杂的 C# 语法,建立的复杂的 C# 语法树,还有其复杂的树遍历和修改过程,也都被其 API 包装得干净简洁。而这背后是它的重要设计思路 —— 红绿树。红绿树的影子如果你是通过搜索找到这篇文章的,那么至少证明你调试过 Roslyn API 的使用,或者阅读过 Roslyn 的源码。因为正常使用 Roslyn 的 API 时你...原创 2018-07-19 20:09:36 · 3787 阅读 · 6 评论 -
Roslyn 语法树中的各种语法节点及每个节点的含义
使用 Roslyn 进行源码分析时,我们会对很多不同种类的语法节点进行分析。如果能够一次性了解到各种不同种类的语法节点,并明白其含义和结构,那么在源码分析的过程中将会更加得心应手。本文将介绍 Roslyn 中各种不同的语法节点、每个节点的含义,以及这些节点之间的关系和语法树结构。基本概念using System;namespace Walterlv.Demo{ ...原创 2018-07-19 20:03:56 · 2988 阅读 · 2 评论 -
Roslyn 入门:使用 .NET Core 版本的 Roslyn 编译并执行跨平台的静态的源码
Roslyn 是微软为 C# 设计的一套分析器,它具有很强的扩展性。以至于我们只需要编写很少量的代码便能够编译并执行我们的代码。作为 Roslyn 入门篇文章之一,你将可以通过本文学习如何开始编写一个 Roslyn 扩展项目 —— 编译一个类,然后执行其中的一段代码。本文是 Roslyn 入门系列之一:Roslyn 入门:使用 Visual Studio 的语法可视化(Synta...原创 2018-06-02 09:22:56 · 6412 阅读 · 0 评论 -
Roslyn 入门:使用 Roslyn 静态分析现有项目中的代码
Roslyn 是微软为 C# 设计的一套分析器,它具有很强的扩展性。以至于我们只需要编写很少量的代码便能够分析我们的项目文件。作为 Roslyn 入门篇文章,你将可以通过本文学习如何开始编写一个 Roslyn 扩展项目,如何开始分析一个解决方案(.sln)中项目(.csproj)的代码文件(.cs)。如果你希望真实地静态分析一个实际项目,并且理解这样的分析过程是如何进行的(而不只是写个...原创 2018-03-19 19:48:54 · 8781 阅读 · 10 评论 -
Roslyn 入门:使用 Visual Studio 的语法可视化窗格查看和了解代码的语法树
使用 Visual Studio 提供的 Syntax Visualizer,我们可以实时看到一个代码文件中的语法树。这对我们基于 Roslyn 编写静态分析和修改工具非常有帮助。本文将介绍如何安装它和使用它。这里是 Visual Studio 的语法可视化(Syntax Visualizer):正在分析的代码文件是 MSTestEnhancer 中的 ContractTestCo...原创 2018-03-19 19:51:15 · 1437 阅读 · 1 评论