感觉Reflector比ILSpy好用,但是Reflector收费。ILSpy经常反编译出一些乱七八糟的东西。但是在使用中,最好还是两个一起用,因为经常反编译后的代码出错,但是不知道为什么,两个对比一下就知道了,像下面这张图:
左边是ILSpy,右边是Reflector,两个反编译的结果还不一样,错误也不一样。
1. error CS0579
error CS0579: Duplicate ‘global::System.Runtime.Versioning.TargetFrameworkAttribute’ attribute
CS0579 “global::System.Runtime.Versioning.TargetFrameworkAttribute”特性重复
将反编译的多个项目添加到一个解决方案时会遇到这个问题,解决方式:找到每个项目的AssemblyInfo.cs文件,将
[assembly: TargetFramework(".NETFramework,Version=v4.0", FrameworkDisplayName = ".NET Framework 4")]
这句注释掉,再编译就不会出问题了。
2. (Reflector)set get访问器反编译
public string UserName{ get; set; }
/* 正常的代码 */
UserName="david";
string uName=UserName;
/* Reflector 反编译后的结果 */
Set_UserName("david");
string uName=Get_UserName();