C#反编译中资源文件的恢复

来源:互联网 发布:mac怎么升级到10.13 编辑:程序博客网 时间:2024/06/06 00:27

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);