什么是Roslyn
从C# 6 开始,编译器被完全用C#重写并且模块化,这个模块化的编译器就是Roslyn。利用Roslyn,我们可以方便地在我们的程序中动态编译代码,即,把代码当做数据传递给Roslyn编译器,得到编译后的程序集。
安装并引用Roslyn
在开始使用之前,先在使用Nuget安装Microsoft.CodeAnalysis.CSharp
之后在命名空间声明中,添加
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.Text;
编译流程
在使用Roslyn之前,对编译器如何把源代码翻译成MSIL的过程,即,编译流程有个大概了解,对我们得心应手使用这个工具非常有帮助。
源文件读取
编译的第一步是读取源文件,在Roslyn里面用SourceText表示源文件**,支持多种不同的源文件读取,包括从文件流读取、直接在源代码指定literal的方式,像以下两种方式常用
SourceText st; //从文件流读取
using (var fs = new FileStream(filePath, FileMode.Open))
{