.net反射反编译的C#代码将无法编译(.net Reflector decompiled C# c

2019-07-22 10:22发布

我试图反编译一个C#控制台应用程序,并在Visual C#2010重新编译它,但也有在代码中的许多错误。 下面是一个例子:

 public static Test mTest
    {
        [CompilerGenerated]
        get
        {
            return <mTest>k__BackingField;
        }
        [CompilerGenerated]
        set
        {
            <mTest>k__BackingField = value;
        }
    }

我在.net反射设置的.NET Framework版本3.5。 有没有什么办法让代码能够从.NET反射来重新编译?

Answer 1:

还有就是要克服这种限制没有笔直的路。 编译器产生的IL从源代码,这IL可能包含关于您最初的源代码信息。 例如,当你写

public string Property { get; set; }

编译器创建支持字段(例如<Property >k__BackingField使用特殊符号,你不能用它来命名源代码的字段)并将其命名为。 你给了上面的例子中,当反射器试图推断出是什么意思的编译器。

我用dotPeek (由JetBrains的免费反编译),并了解autoproperties,所以你会看到在你的例子正确的代码。 但同样 - 有可能是情况下,如果dotPeek将无法得到最初的源代码。



文章来源: .net Reflector decompiled C# code won't compile