2

我有一个 C# 代码,我希望 CIL (*.il) 在我对源 C# exe 程序集进行反汇编时包含我的自定义注释。

我如何实现它?

4

2 回答 2

4

汇编的 IL 操作码不包含注释,因此您无法反汇编并获取注释。基本上你不能这样做。要么共享 IL 源,要么调查 pdb 是否可能用于原始 IL 源。

没有“评论”操作码。

于 2012-10-13T11:07:14.103 回答
1

您可以使用 写出任意 IL 操作代码ILGenerator.Emit,但我认为那里不支持注入注释。

如果您只是为了调试目的而这样做(例如,使搜索更容易),您总是可以添加一个具有描述性名称的未使用变量。例如:

void Main()
{
    var a = new A();    
}

class A
{
    bool this_is_a_comment = false;
}

产量

IL_0001:  newobj      UserQuery+A..ctor
IL_0006:  stloc.0     

A..ctor:
IL_0000:  ldarg.0     
IL_0001:  ldc.i4.0    
IL_0002:  stfld       UserQuery+A.this_is_a_comment
IL_0007:  ldarg.0     
IL_0008:  call        System.Object..ctor
IL_000D:  nop         
IL_000E:  ret    
于 2012-10-13T10:08:13.583 回答