【发布时间】:2021-11-15 05:04:08
【问题描述】:
我正在写一个tool,给定一段(可编译的)C#代码,生成另一个源,使用Mono.Cecil,输出一个与由编译原始代码。这是通过解析 C# 代码并访问生成的 AST 并生成对等效 Mono.Cecil API 的调用来实现的(我想这有点类似于 Roslyn 的代码生成部分所做的,但生成对 Mono.Cecil 的调用而不是 @ 987654329@)。
鉴于此,处理 给定 AST 的降低版本将使代码更易于实现、更健壮等,但查看 Roslyn 源代码似乎没有办法访问它.
在最好的情况下,我的代码需要调用负责降低 https://github.com/dotnet/roslyn/blob/main/src/Compilers/CSharp/Portable/Lowering 的各种类型,AFAICS 都是内部的。
问题出在哪里:真的不可能获得给定 AST 的降低版本?
【问题讨论】:
-
AFAICS 他们使用 ICSharpCode.Decompiler (github.com/ashmind/SharpLab/blob/main/source/Server/…)。不幸的是,这对我不起作用