<LabelId>k__BackingField反编译错误修改

使用 reflector后生成的源代码出现

private string <LabelId>k__BackingField;

这样的问题,造成编译失败。

解决方法:

因为菜,所以不能改 reflector ,只好改生成的源代码了,使用.net 的在文件中替换的功能来解决:

1Ctrl+Shift_H 打开替换窗口;

2、如下图示,使用正则表达式替换;

查找内容:\<{.#}\>k__BackingField

替换内容:_\1_k__BackingField

3、结束。

没办法,懒人就是这个样子,谁让生成的代码里边这种错误这么多呢,要不然也用不着这个方法了。

解释:

CompilerGenerated是反编译生成的代码如
 public class MyClass
        {
            public string Name{set;get;}
            public string Value { set; get; }

            public MyClass(string pName, string pValue) 
            {
                Name = pName;
                Value = pValue;
            }

        }
反编译后
反编译后
public class MyClass
{
    // Fields
    [CompilerGenerated]
    private string <Name>k__BackingField;
    [CompilerGenerated]
    private string <Value>k__BackingField;

    // Methods
    public MyClass(string pName, string pValue)
    {
        base..ctor();
        this.Name = pName;
        this.Value = pValue;
        return;
    }

    // Properties
    public string Name
    {
        [CompilerGenerated]
        get
        {
            string str;
            str = this.<Name>k__BackingField;
        Label_0009:
            return str;
        }
        [CompilerGenerated]
        set
        {
            this.<Name>k__BackingField = value;
            return;
        }
    }

    public string Value
    {
        [CompilerGenerated]
        get
        {
            string str;
            str = this.<Value>k__BackingField;
        Label_0009:
            return str;
        }
        [CompilerGenerated]
        set
        {
            this.<Value>k__BackingField = value;
            return;
        }
    }
}

<URL>k__BackingField只不过就是一"变量命名"
只不过vs不认这个命名而以,把这个命名改成vs能认的命名就可以了。
PWUrlRedirect
代码简短,我直接把<URL>k__BackingField改成 _url,编译通过
需要注意的是:要主动应用"替换"功能,vs自动的替换没有作用(它根本不认为那是变量,不会主动替换的)。

    if (localHeader || this.size == (ulong)-1)
    {
     this.size = (ulong)zipExtraData.ReadLong();
    }

-1是不可能转换成ulong,全部替换== (ulong)-1  --------》 <0

base..ctor();--------》注释掉

this.string_2 != "";-->

bool flag1 = this.string_2 != "";

frmTbSp_tao.<>c__DisplayClass3 <>c__DisplayClass = new frmTbSp_tao.<>c__DisplayClass3();
<>c__DisplayClass.<>4__this = this;

这句子是多余的

<>c__DisplayClass.ipc = 0;

ipc这个变量是没有的,需要添加:

private int ipc = 0;

<>c__DisplayClass.<>4__this 换成 this

ExeSearch.>c__DisplayClass3 <>c__DisplayClass = new ExeSearch.>c__DisplayClass3();
ExeSearch.>c__DisplayClass3 arg_7F_0 = <>c__DisplayClass;

 这两句多余的

改成

 IHTMLDocument2 doc2;

以下

arg_7F_0.doc2 = ExeSearch.stayTime_SiteContainer0.Site1.Target(ExeSearch.stayTime_SiteContainer0.Site1, iePopup.Document);

改成

doc2 = ExeSearch.stayTime_SiteContainer0.Site1.Target(ExeSearch.stayTime_SiteContainer0.Site1, iePopup.Document);

原文地址:https://www.cnblogs.com/sung/p/3081050.html