我尝试反编译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重新编译的代码?
答案 0 :(得分:3)
没有直接的方法可以克服这个限制。编译器从您的源代码创建了IL
,此IL
可能不包含有关您的初始源代码的信息。例如,当你写
public string Property { get; set; }
编译器创建支持字段(例如<Property >k__BackingField
)并使用特殊符号命名,您无法在源代码中命名字段。你举了上面的例子,反射器试图推断出编译器的含义。
我使用了dotPeek(JetBrains的免费反编译器)并且它了解autoproperties,因此您可以在示例中看到正确的代码。但同样 - 可能会出现dotPeek无法获取初始源代码的情况。