在 2014 微软 Build 大会上,Anders Hejlsberg 亲自宣布 .NET 编译平台 Roslyn 开源。
Anders Hejlsberg 是 Turbo Pascal 编译器的主要作者,号称 Delphi 和 C# 之父,同时他也是 .NET 创立者。
Roslyn 是以 API 为驱动的下一代编译器,集成在最新版的 Visual Studio 上。它开放 C# 和 Visual Basic 编译器的 API,使得开发者可以借助编译器进行解析代码文件、动态为编程语言增加功能、扩展编译器、自定义编译器动作等操作。
Git源代码地址:
https://github.com/dotnet/roslyn
CodePlex:
https://roslyn.codeplex.com/
Nuget地址:
http://www.nuget.org/packages/Microsoft.Net.Compilers/
介绍
一般来说,编译器是一个黑箱,源代码从一端进入,然后箱子中发生一些奇妙的变化,最后从另一端出来目标文件或程序集。编译器施展它们的魔法,它们必须对所处理的代码进行深入的理解,不过相关知识不是每个人都需要知道,除了实现编译器的大法师。因此在转换输出完成后相关的信息就会被遗忘。
对编译器来说,几十年来一直很好地为我们所用,但只是会用编译器已经不够。我们越来越依赖于集成开发环境(IDE)的特性,比如智能感知、重构、智能重命名、“查找所有引用”和“转到定义”来提高我们的生产率。我们依赖于代码分析工具来提高我们的代码质量,使用代码生成器来帮助构造程序。这些工具变得越聪明,他们需要了解越来越多的深入代码知识,但是这些知识只有编译器知道。这是.NET编译器平台得核心任务(“Roslyn”):打开黑箱,让工具和终端用户共享编译器掌握的关于我们代码的丰富信息。取代不透明的源代码入和对象出的转换器,通过.NET编译器平台(“Roslyn”),编译器变成你可以使用的平台API,以用于你的工具和应用的编码相关的工作。
让编译器作为平台的过渡,为集中创建代码工具和应用程序大大降低了进入门槛。它创造了许多革新,如:meta-Programming、代码生成和转换,交互使用C#和VB语言,和某些特殊领域的嵌入式C#和VB语言。
.NET编译器平台(“Roslyn”)SDK预览版包含了最新的新语言对象模型草案,以用于代码生成、分析以及重构。在将来的预览版中,我们希望包含用于脚本以及交互式使用C#和Visual Basic的API支持草案。本文档提供了.NET编译器平台(“Roslyn”)概念上的概览。更多的细节可以在SDK预览版的演练及例子中找到。
更多简介和API介绍:
https://www.oschina.net/translate/roslyn-intro
相关博客:
入门API:http://daveaglick.com/posts/compiler-platform-scripting
利用Roslyn构建一个简单的C#交互脚本引擎
通过Roslyn动态生成程序集
Roslyn 编译C#代码