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

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

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

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

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

 public string Property { get; set; } 

编译器创建支持字段(例如k__BackingField )并使用特殊符号命名它,您不能使用它来命名源代码中的字段。 您举了上面的示例,其中reflection器试图推断出编译器的含义。

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