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

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

 我们知道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)

 

5、如果在生成resx文件的时候出现: error RG0000: 未能加载文件或程序集“DevExpres.xx"或它的某一个依赖项。系统找不到指定的文件

请用gacutil.exe将这个dll 添加到GAC中

命令为 gacutil -i 你的dll

相关文章
|
6天前
|
开发框架 网络协议 .NET
C#/.NET/.NET Core优秀项目和框架2024年10月简报
C#/.NET/.NET Core优秀项目和框架2024年10月简报
|
1月前
|
开发框架 前端开发 API
C#/.NET/.NET Core优秀项目和框架2024年9月简报
C#/.NET/.NET Core优秀项目和框架2024年9月简报
|
2月前
|
开发框架 .NET C#
VSCode开发.net项目时调试无效
【9月更文挑战第22天】在使用 VSCode 开发 .NET 项目时遇到调试问题,可从项目配置、调试配置、调试器安装、运行环境、日志和错误信息等方面排查。确认项目类型及文件配置,检查 `launch.json` 文件及配置项,确保调试器扩展已安装并启用,验证 .NET 运行时版本和环境变量,查看 VSCode 输出窗口和项目日志文件,检查权限及代码错误。若问题仍未解决,可查阅官方文档或社区论坛。
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
本文讨论了在基于.NET 6和.NET Framework的WinForms项目中添加图表控件的不同方法。由于.NET 6的WinForms项目默认不包含Chart控件,可以通过NuGet包管理器安装如ScottPlot等图表插件。而对于基于.NET Framework的WinForms项目,Chart控件是默认存在的,也可以通过NuGet安装额外的图表插件,例如LiveCharts。文中提供了通过NuGet添加图表控件的步骤和截图说明。
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
|
1月前
|
存储 消息中间件 前端开发
.NET常见的几种项目架构模式,你知道几种?
.NET常见的几种项目架构模式,你知道几种?
|
1月前
|
边缘计算 开发框架 人工智能
C#/.NET/.NET Core优秀项目和框架2024年8月简报
C#/.NET/.NET Core优秀项目和框架2024年8月简报
|
1月前
|
Cloud Native API C#
.NET云原生应用实践(一):从搭建项目框架结构开始
.NET云原生应用实践(一):从搭建项目框架结构开始
|
3月前
|
jenkins 测试技术 持续交付
解锁.NET项目高效秘籍:从理论迷雾到实践巅峰,持续集成与自动化测试如何悄然改变游戏规则?
【8月更文挑战第28天】在软件开发领域,持续集成(CI)与自动化测试已成为提升效率和质量的关键工具。尤其在.NET项目中,二者的结合能显著提高开发速度并保证软件稳定性。本文将从理论到实践,详细介绍CI与自动化测试的重要性,并以ASP.NET Core Web API项目为例,演示如何使用Jenkins和NUnit实现自动化构建与测试。每次代码提交后,Jenkins自动触发构建流程,通过编译和运行NUnit测试确保代码质量。这种方式不仅节省了时间,还能快速发现并解决问题,推动.NET项目开发迈向更高水平。
51 8
|
3月前
|
架构师 开发者
【悬念揭秘】DDD:那片隐藏在软件深处的业务乐土——.NET项目如何借力领域驱动设计,让复杂业务逻辑迎刃而解?
【8月更文挑战第28天】领域驱动设计(DDD)在.NET项目中的应用聚焦于将业务领域知识与软件开发紧密结合,通过构建清晰的领域模型管理复杂业务逻辑。DDD的核心概念包括限界上下文、聚合、实体等,确保模型与实现的统一。在.NET中,通过CQRS和事件源等模式提高系统响应性和可扩展性,实现业务事件驱动的解耦与协作。DDD不仅是一种设计方法,更是要求开发者深入理解业务的文化,助力.NET项目应对复杂挑战,实现业务与技术的融合。
64 6
|
3月前
|
设计模式 存储 前端开发
揭秘.NET架构设计模式:如何构建坚不可摧的系统?掌握这些,让你的项目无懈可击!
【8月更文挑战第28天】在软件开发中,设计模式是解决常见问题的经典方案,助力构建可维护、可扩展的系统。本文探讨了.NET中三种关键架构设计模式:MVC、依赖注入与仓储模式,并提供了示例代码。MVC通过模型、视图和控制器分离关注点;依赖注入则通过外部管理组件依赖提升复用性和可测性;仓储模式则统一数据访问接口,分离数据逻辑与业务逻辑。掌握这些模式有助于开发者优化系统架构,提升软件质量。
55 5