Reflector反編譯.NET檔案後修復

星空你好發表於2015-12-29

反編譯後的工程檔案用VS2010開啟後,在開啟窗體時會出現一系列錯誤提示:

第一種情況:

“設計器無法處理第 152 行的程式碼: base.AutoScaleMode = AutoScaleMode.Font; 方法“InitializeComponent”內的程式碼由設計器生成,不應手動修改。請移除任何更改,然後嘗試重新開啟設計器”。

解決方法就是:對所有System.Windows.Forms.名稱空間裡面的控制元件需要全名稱空間的宣告,例如裡面上圖的base.AutoScaleMode = AutoScaleMode.Font;就要改成base.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
第二種情況:

“變數“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的過程)。

5.屬性錯誤修復。如:private Encoding <Encoding>k__BackingField; 直接修改為private Encoding _Encoding;即可。記得替換變數使用的地方。一般都是屬性內使用。替換的地方並不多。

相關文章