我想要做的是阅读C#代码,解析它,插入一些方法调用并最终编译它。
是否可以将C#源代码(字符串列表)转换为CodeDOM对象?
答案 0 :(得分:6)
使用核心.NET Framework无法直接执行此操作。您需要使用第三方或附加工具,例如:
答案 1 :(得分:6)
这是一个非常古老的问题,但值得注意的是,已接受的答案不再适用。微软最近的Roslyn项目明确旨在揭示编译器在静态分析代码库过程中获得的所有知识,并通过托管API公开所有这些信息,以便您利用。它适用于VB和C#。
由于您希望使用静态分析信息,因此您需要Microsoft.CodeAnalysis
NuGet包(C#所需的内容位于Microsoft.CodeAnalysis.CSharp
命名空间下),有时需要{{3}文档中的页面。
答案 2 :(得分:2)
试试Linq over C#。太棒了。
答案 3 :(得分:0)
答案 4 :(得分:0)
如果您希望能够解析C#源代码(或其他各种语言)的任意分析和转换,请查看我们的The DMS Software Reengineering Toolkit。
DMS具有完整的C#前端,为解析的代码(但不是CodeDom)构建完整的抽象语法树,为步行/检查/更改AST提供完整的过程API。在修改树之后,DMS可以重新生成与修改后的树相对应的源代码,可以是保真模式,它可以保留原始间距,也可以是漂亮印刷模式,它可以应用可以完全控制的漂亮印刷样式。注释将在正确的重新生成的源中保留。
此外,DMS提供源级模式匹配和转换(例如,您可以编写“x = x + 1 ==> x ++”而不是编码所有的walk-around-tree-to-verify,hack the要改变的树。)请参阅writeup on program transformations以了解为什么这项工作要少得多......
答案 5 :(得分:-2)
CSharpCodeProvider可能就是你要找的东西。