.net Reflector反编译的C#代码将无法编译

时间:2013-03-21 18:50:28

标签: c# .net reflector

我尝试反编译C#控制台应用程序并在Visual C#2010中再次编译它,但代码中有很多错误。这是一个例子:

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

我在.net Reflector中将.net框架版本设置为3.5。有没有办法获得能够从.net Reflector重新编译的代码?

1 个答案:

答案 0 :(得分:3)

没有直接的方法可以克服这个限制。编译器从您的源代码创建了IL,此IL可能包含有关您的初始源代码的信息。例如,当你写

public string Property { get; set; }

编译器创建支持字段(例如<Property >k__BackingField)并使用特殊符号命名,您无法在源代码中命名字段。你举了上面的例子,反射器试图推断出编译器的含义。

我使用了dotPeek(JetBrains的免费反编译器)并且它了解autoproperties,因此您可以在示例中看到正确的代码。但同样 - 可能会出现dotPeek无法获取初始源代码的情况。