XML serialize Roslyn SyntaxTree?

本文关键字:SyntaxTree Roslyn serialize XML | 更新日期: 2023-09-27 17:58:13

我正在寻找将C#转换为XML并再次反序列化为C#的选项。有人知道现有的解决方案吗?我认为Roslyn语法树是不可Xml序列化的。我还认为,为语法树制作一个xml序列化程序将是一项相当大的任务。但maybee不是吗?

为什么我需要这个?我想通过xsl到syntaxtree xml,然后到c(或maybee vb)从xml模型生成代码。

我不想直接从XSL生成C#(可以,但我觉得不太理想)。我需要XSL,因为我还将从XML模型生成XAML和HTML,并且我还希望能够生成所需的任何代码等。

我知道T4模板,但由于各种原因,现在我正在考虑其他选择。

XML serialize Roslyn SyntaxTree?

Roslyn是一个开放的编译器。我假设您可以直接插入自己的代码来遍历AST并将其转储为XML格式。假设打开的,那么您可以实现自己的扩展,以读取转储的XML,并构建Roslyn AST(我认为它可以被预打印)。这看起来工作量很大。

有关罐装解决方案,请参阅XML中的C#AST。该解决方案也需要类似的readXML来制作AST。

您可能不想将XML用于树;这样的文件通常是巨大的。请参阅面向对象编程语言的AST(抽象语法树)是什么样子的?。

最好是在解析和构建AST的工具的上下文中操作,直接在这些AST上进行操作,然后预打印结果。我们的DMS系统具有许多语言的解析(如前两个示例所示)和预打印功能,其中包括已经内置的C#,以及许多有用的API,用于检查/修改/从其构建的AST生成代码。(XSL在分析AST方面没有你想象的那么有用;它不理解赋予程序意义的"上下文"[例如,周围的作用域和声明])。