反编译问题:
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> |
收工。自己用的时候根据情况不同一定要先测试,后果自负。