设置首页收藏本站在线聊天
授权版本:2024_09
开启左侧

[C#] 反编译一个项目后无法打开窗体

[复制链接]
Princess 发表于 2023-4-14 11:01:36 | 显示全部楼层 |阅读模式
最近反编译了别人的Winform项目,导出后项目可以编译,但是无法设计界面,于是有了下面的艰辛历程。

首先,设计器里面的内容会和主要的cs进行合并,因为用了partial关键字声明类型。
我们需要新建一个同类名的以.Designer.cs结尾的文件,类似以下:
  1. namespace 命名空间
  2. {
  3.     partial class 类名
  4.     {
  5.         private System.ComponentModel.IContainer components = null;

  6.         protected override void Dispose(bool disposing)
  7.         {
  8.             if (disposing && (components != null))
  9.             {
  10.                 components.Dispose();
  11.             }
  12.             base.Dispose(disposing);
  13.         }

  14.         private void InitializeComponent()
  15.         {
  16.                 //控件初始化内容,给设计器使用的
  17.         }
  18.                
  19.        //控件声明位置
  20. }
复制代码

然后把原来类里面对应的内容复制到InitializeComponent()函数下,主要声明放到控件声明位置(仿照winform窗口类的结构)。
然后把类名.cs下面同名的components 声明和Dispose(bool disposing)、 InitializeComponent()删除即可。
接下来就是打开工程文件.csproj文件,按照格式添加新加或者改动文件进去,例如我这里的MainForm函数。
需要说明的是:不管Include字段中的文件是否在多个文件夹下或路径是否很长,必须写完整;
而DependentUpon字段则直接写最后文件名即可(不带多层文件夹完整路径)。
  1. <Compile Include="MainForm.cs">
  2.       <SubType>Form</SubType>
  3.     </Compile>
  4.     <Compile Include="MainForm.Designer.cs">
  5.       <DependentUpon>MainForm.cs</DependentUpon>
  6.     </Compile>
  7.     <EmbeddedResource Include="MainForm.resx">
  8.       <DependentUpon>MainForm.cs</DependentUpon>
  9.       <SubType>Designer</SubType>
  10.     </EmbeddedResource>
复制代码


第二步,把partial关键字放到原来类名.cs文件名类型定义前面即可。

第三步,原则上应该可以正常用,但是双击类名.cs设计器打开界面提示错误。
WeChat Screenshot_20230414105110.png
https://stackoverflow.com/questi ... -f?answertab=active
怎么解决呢?就是把InitializeComponent()函数中带有nameof(类型)的改成字符串类型名即可
WeChat Screenshot_20230414110000.png
  1. this.Name = nameof(MainForm);
复制代码
改成
  1. this.Name = "MainForm";
复制代码
成功解决。
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
梅启升 发表于 2023-8-29 17:56:31 | 显示全部楼层
学到了,我努力学习学习,代码记下了
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
夜问夜问 发表于 2024-4-23 15:35:19 | 显示全部楼层
大佬我也反编译了一个dll文件,窗体也一直无法打开,能和你一起交流一下吗?
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
雾里看花 发表于 2024-4-24 09:41:56 | 显示全部楼层
感谢分享,,,,
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
wenbo_bob 发表于 2024-4-24 14:23:44 | 显示全部楼层
感谢分享
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表