• 恢复Reflector反编译后资源文件的办法


    反编译问题:

    1.路径问题:如果遇到了Path.Combine,有错误改下即可

    2.资源文件问题:

    在Reflector下,对左边的资源管理窗口的Resources文件夹下的资源文件,进行右键点击,选中"Save as" 选项保存即可。

    例:对于项目文件夹里面的TryAssemb.Form1.resx,首先改为Form1.resx然后移动到TryAssemb目录里面

    3.对窗体打开"视图设计器",发现会出现下面的错误:

    修改方法就是对所有System.Windows.Forms.命名空间里面的控件需要全命名空间的声明,

    例如里面 base.AutoScaleMode = AutoScaleMode.Font;就要改成base.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

    而TextBox textBox1; 也要改成private System.Windows.Forms.TextBox textBox1;这样VS就能识别到这个控件是要绘制在Form上面的

    4.委托和回调函数问题

    一般会被还原为add_Xxx(MethodsName)方法,需要改为 += MethodsName

    5.命名空间问题

    如果需要切换到IDE的窗体设计器,而不出错,则还需要在*.cs中添加比如System.Windows.Forms的命名空间前缀。

    6.窗体设计器识别问题

    需要把以下代码
    ComponentResourceManager manager = new ComponentResourceManager(typeof(ClassName));
    替换为
    System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ClassName));
    窗体设计器才能正常识别。

    资源文件小工具

    https://www.cnblogs.com/cgli/archive/2011/04/28/2032262.html

    其他转换方法(未试过):

    https://ask.csdn.net/questions/258576?ref=myrecommend

     1.资源文件格式转换,将.resources(二进制)文件转成.resx文件(XML)
      用Program FilesMicrosoft Visual Studio .NET 2003SDKv1.1Bin下 resgen.exe
      格式: resgen *.resources *.resx(.resx文件最好与窗体.cs文件同名)
    
      参见:
      http://www.microsoft.com/china/community/program/originalarticles/techdoc/how_resourcefile.mspx
    
    2.将InitializeComponent方法中的对象manager替换为resources(没错,只替换变量名^_^)
    3.将资源文件.resx放到窗体文件.cs相同的文件夹下。
    4.将所有窗体(.cs)从工程中排除,再添加(这样可以省去将.resx文件映射到.csproj的过程)。

    resx文件和cs文件自动关联的工具解决方法

     https://www.cnblogs.com/bffox/p/3373887.html

    在反编译程序资源例如reflector中,我们常碰到resx文件和cs源代码文件分离的问题,终极解决方法是修改项目csproj文件,手工修改其架构,但碰到大量的就需要使用正则表达式替换,然后在vs中重新全部加载。

    第一种解决方法,点击需要关联的cs文件,然后通过项目菜单中添加新项,选择resx文件,则会自动关联,这适用于单一文件,不适合大批量关联。

    第二种解决方法,简单修改项目文件。

    打个比方,在项目文件中,原来是

    1
    <EmbeddedResource Include="DZJ.LSSK.StockfrmStockModify.resx" />

    我们只要修改为:

    <EmbeddedResource Include="DZJ.LSSK.StockfrmStockModify.resx" >
    <DependentUpon>frmStockModify.cs</DependentUpon>
    </EmbeddedResource>

      第三种方法来源于第二种方法,适合批量。首先要将resx文件放到cs相同目录下,并且同名,方法网上多得是,就不在这里啰嗦了;其次没必要使用原有的ResXFileCodeGenerator工具

    这里举两种情况,一种情况是同在根目录,第二种情况是都在子目录,下面的表达式是都在二层子目录,第一种情况参看代码修改:

    正则表达式为将

    1
    <EmbeddedResourcesInclude="([^"]*)\([^"]*).resx"s/>

    替换为 

    1
    2
    3
    <EmbeddedResource Include="$1\$2.resx">
    <DependentUpon>$2.cs</DependentUpon>
    </EmbeddedResource>

      收工。自己用的时候根据情况不同一定要先测试,后果自负。

  • 相关阅读:
    extjs tabpanel动态添加panel
    日期处理工具类
    POI导入导出Excel
    生成流水号
    计划排产系统
    3Dflash 图表xml数据封装
    使用GZIP动态压缩Extjs
    码农行业的薪水一览,如有雷同纯属巧合
    我的技术从今天开始开通啦~~~
    关于腾讯QQ
  • 原文地址:https://www.cnblogs.com/xcsn/p/4678358.html
Copyright © 2020-2023  润新知