1. 程式人生 > 其它 >C#反編譯中資原始檔的恢復

C#反編譯中資原始檔的恢復

C#反編譯一般使用Reflector。

此時工程中的資原始檔被反編譯為二進位制的.resources檔案,這個檔案就是.resx。

需要通過VS SDK中的工具ResGen.exe恢復,命令列是 ResGen ***.resources ***.resx,就可以恢復。

將此檔案加到工程中,如有下面一個錯誤:

錯誤資訊:System.Resources.MissingManifestResourceException:未能找到任何適合於指定的區域或非特定區域性的資源。請確保在編譯時已將“****.****.Resource.resources”正確嵌入或連結到程式集"****",或者確保所有需要的附屬程式集都可載入並已進行了完全簽名。

這個錯誤的主要問題就是沒有找到需要的資原始檔(該檔案為Resources.resx),
引用該檔案的地方就是
System.Resources.ResourceManager manager = new System.Resources.ResourceManager("×××.Resources", typeof(Resources).Assembly);
而導致錯誤的原因就是"×××.Resources"的配置錯誤

解決方法:首先檢視工程中時候存在Resources.resx相關的檔案,
找到它在工程中的位置(不如說一般都是在:工程名.Properties 名稱空間下),
最後更改配置為new System.Resources.ResourceManager("工程名.Properties.Resources", typeof(Resources).Assembly);