CharlesChen's Technical Space

简单实用是我一直在软件开发追求的目标(I Focus on. Net technology, to make the greatest efforts to enjoy the best of life.)
Not the best, only better
随笔 - 135, 文章 - 0, 评论 - 547, 阅读 - 51万
  博客园  :: 首页  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

Reflector导出.NET工程项目的修复

Posted on   Charles Chen  阅读(6460)  评论(4编辑  收藏  举报

     我们知道Reflector可以反编译IL代码,根据它可以查看到不同语言的源代码(如C#,VB.Net等),但是Reflector还可以导出成工程文件,得到源代码的工程项目文件。通过这种方式得到的工程文件如果用Visual Studio打开后,虽然大多数的问题是由于缺少引用“程序集”带来的编译不能通过,但是还是一些非与此相关的问题存在,需要对反编译的工程项目进行手动修改和调整。比如对于Winform程序中的窗体打开时候会出现一系列的错误提示:

 

1、设计器无法处理第 ** 行的代码: this.okButton.DialogResult = DialogResult.Cancel; 方法“InitializeComponent”内的代码由设计器生成,不应手动修改。请移除任何更改,然后尝试重新打开设计器。

解决方法:对所有System.Winform.Forms.命名空间里面的控件需要全命名空间的申明,例如对上面的就改成

this.okButton.DialogResult=System.Windows.Forms.DialogResult.Cancel;

 

2、变量"manager"未申明或从未赋值

解决方法:本方法只限于在InitializeComponent中包含System.Resources.ResourceManager调用的窗体。

(1)资源文件格式转换,将.resources(二进制)文件转成.resx文件(XML)  用C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin下 resgen.exe  格式: resgen *.resources *.resx(.resx文件最好与窗体.cs文件同名)

(2)将InitializeComponent方法中的对象manager替换为resources(没错,只替换变量名^_^,全部都换掉哦,最好的办法就是更改manager的申明)

(3)将资源文件.resx放到窗体文件.cs相同的文件夹下。

(4)将所有窗体(.cs)从工程中排除,再添加(这样可以省去将.resx文件映射到.csproj的过程)。

 

3、打开窗体后类型****.Properties.Resources”没有名为“Login”的属性。

找到对应的代码:    this.logoPictureBox.Image = Resources.Login;表示无法找到资源文件Login名称。

(1)资源文件格式转换,将.resources(二进制)文件转成.resx文件(XML) 用C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin下 resgen.exe  格式: resgen *.resources *.resx(.resx文件最好与窗体.cs文件同名)。

(2)然后用VS打开转换成功的*.resx文件就找到窗体的资源文件。

(3)将找到的窗体资源文件和对应的窗体即能解决。

 

4、针对winform的资源文件保护两类:项目资源文件和窗体资源文件。

选择资源的时候,资源上下文包含本地资源和项目资源文件。

(1)本地资源文件就是指当前窗体的资源(命名为窗体名.resx)

(2)项目资源文件是项目的资源(默认为Resources.resx)

 

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
历史上的今天:
2010-04-17 C#值类型和装箱
点击右上角即可分享
微信分享提示