Microsoft已推出一种名为Source Generators的C#编译器功能的预览,该功能可以检查程序并生成可以添加到编译中的源文件。 微软表示,Source Generators可以在许多情况下提高性能。
4月29日发布的Source Generator是一段代码(.NET Standard 2.0程序集),它在编译期间运行,可以检查程序以生成其他文件,这些文件与其余代码一起编译。
[ 同样在InfoWorld上:我们不像以前那样编写代码的5个原因 ]
源代码生成器使C#开发人员可以执行以下操作:
- 检索表示所有正在编译的用户代码的编译。 可以检查此对象,并且开发人员可以编写与语法和语义模型一起使用的代码,以供正在编译的代码使用,例如使用分析器。
- 生成要在编译期间添加到编译对象的C#源文件,并在编译代码时提供其他源代码作为输入。
微软表示,可以检查用户代码以及编译器在编译过程中建立的丰富元数据,并根据分析的数据将C#代码发回到同一编译中。 源生成器类似于检查C#或Visual Basic代码的Roslyn分析器,它们充当可以发出C#源代码的分析器。
源代码生成器将作为C#9的一部分提供。 该公司提供了《 源代码生成器食谱》和《 源代码生成器》设计文档 ,以帮助开发人员入门。
受益于源生成器的方案包括:
- 执行运行时反射。 例如,通过在应用启动时分析代码,控制器发现阶段可能会在编译时发生,从而缩短启动时间。
- 为了避免使用“字符串型” API,例如控制器和Razor页面之间的ASP.NET Core路由如何工作。 可以对路由进行强类型化,并在编译时生成所需的字符串。
- 帮助消除基于链接器和提前进行编译优化的障碍。
要访问Source Generator,开发人员必须安装最新的.NET 5预览版和最新的Visual Studio预览版 。