记录下最近修复反编译的C#源码中遇到的问题 以及修复方法

浏览:3460次阅读
没有评论

提醒:本文最后更新于 2021-09-26 18:32,文中所关联的信息可能已发生改变,请知悉!

1、 代码

  记录下最近修复反编译的 C# 源码中遇到的问题 以及修复方法

        错误 CS0201 只有 assignment、call、increment、decrement 和 new 对象表达式可用作语句

记录下最近修复反编译的 C# 源码中遇到的问题 以及修复方法

修复

dnSpy IL 指令反编译对字符串的重新拼接错误。

用 string.Concat 拼接字符串

string.Concat(text,str,"3")

记录下最近修复反编译的 C# 源码中遇到的问题 以及修复方法

2、 代码

记录下最近修复反编译的 C# 源码中遇到的问题 以及修复方法

错误     CS1674“IEnumerator”: using 语句中使用的类型必须可隐式转换为“System.IDisposable”

记录下最近修复反编译的 C# 源码中遇到的问题 以及修复方法

修复: 注释掉 using 语句 并且复制括号内的语句 加分号 结束语句即可

记录下最近修复反编译的 C# 源码中遇到的问题 以及修复方法

3、dnSpy 反编译源码的 goto 标签错误

错误    CS0159goto 语句范围内没有“IL_DB”这样的标签

这是明显性的反编译 goto 标签作用域错误,指定作用于内没找到。最简单的方法 换个反汇编工具。再次反编译,找到这段代码的逻辑复制修复即可。

比如 Telerik JustDecompile 这些都可以。

       再或者 便是读懂此段代码的逻辑以后,手动重写逻辑代码 替换掉 goto 标签。

 

   4、base(); 以及 base..ctor();  这个错误的文件可能会比较多,网上百度到的结局结果是  public class xxxx():base() 这样解决。

        但是大项目太多 几千个文件 手改要死人的。测试了直接删除这个语句 不影响代码运行。

        文件太多的话,可以考虑批量替换为空;

 

    5、 错误代码

uint num3 = <PrivateImplementationDetails>.ComputeStringHash(text4);

错误 CS1525 表达式项“.”无效

错误 CS1525 表达式项“<”无效

修复 :代码改为

然后生成 PrivateImplementationDetails 类 并且实现 ComputeStringHash;

代码如下:


        6、错误 CS0118“Page”是 命名空间,但此处被当做 类型 来使用

这个简单是 因为 Page 命名冲突,不知道该引用谁了。直接  : System.Web.UI.Page  引用指定

 

 

正文完
 0
包子
版权声明:本站原创文章,由 包子 于2019-07-17发表,共计882字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)