【问题标题】:DnSpy decompiled output has syntax errors and can not be recompiled, in particular "<>f__switch$map1"DnSpy 反编译输出有语法错误,无法重新编译,特别是“<>f__switch$map1”
【发布时间】:2021-09-12 06:31:22
【问题描述】:

我有一个程序不再支持并且没有可用的源代码。所以我反编译了它以进行修复,因为所需的修复是大量的,我决定使用 dnSpy 将反编译的代码导出为项目,但是有一些错误。特别是我看到看起来像&lt;&gt;f__switch$map1 的变量名称,其中可以是任何数字来代替1。我尝试用更合理的名称替换它们并删除,但它似乎实际上并没有在任何地方声明?如何修复 dnSpy 输出中的这些编译器错误。

【问题讨论】:

  • 它们是编译器生成的名称,故意使用无效的 C# 标识符。您应该找到使用标识符的模式并将其与需要编译器生成的代码的编码模式相匹配 - 例如匿名类型、异步/迭代器方法等
  • 在 DnSpy 设置 -> 反编译器上,应检查以“反编译...”开头的前几个设置
  • @Charlieface 这似乎无法解决问题。我尝试了未选中和选中并重新打开和关闭程序集和 dnspy。
  • @Damien_The_Unbeliever 他们对此有进一步的阅读吗?我很难弄清楚我是如何开始匹配​​这些的。

标签: c# decompiler dnspy


【解决方案1】:

所以,就我而言,我可以简单地重命名所有内容,然后在其他地方定义它,这很有效,并且程序能够编译。

【讨论】:

    猜你喜欢
    • 2020-02-04
    • 2020-07-30
    • 1970-01-01
    • 2012-07-03
    • 1970-01-01
    • 2016-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多