我已经说了6个DLL(没有源代码)。 它们不包含任何逻辑,只包含一个包含字符串表的.resx文件。以编程方式读取资源字符串
有没有一种方法可以从字符串表中提取这些dll的ID和值并将其导出到文本文件?
我已经说了6个DLL(没有源代码)。 它们不包含任何逻辑,只包含一个包含字符串表的.resx文件。以编程方式读取资源字符串
有没有一种方法可以从字符串表中提取这些dll的ID和值并将其导出到文本文件?
知道集名称和资源文件,可以使用反射加载它。
// Resources dll
var assembly = Assembly.LoadFrom("ResourcesLib.DLL");
// Resource file.. namespace.ClassName
var rm = new ResourceManager("ResourcesLib.Messages", assembly);
// Now you can get the values
var x = rm.GetString("Hi");
要列出所有键和值可以使用ResourceSet
var assembly = Assembly.LoadFrom("ResourcesLib.DLL");
var rm = new ResourceManager("ResourcesLib.Messages", assembly);
var rs = rm.GetResourceSet(CultureInfo.CurrentCulture, true, true);
foreach (DictionaryEntry r in rs)
{
var key = r.Key.ToString();
var val = r.Value.ToString();
}
如果您没有访问资源的lib,你可以看到什么是命名空间,类,以及其他一切通过Leo提到的Reflector。
我不`吨知道它是否会工作,但尝试使用.net反射http://reflector.red-gate.com/
这确实提高了资源。但是我想写一个工具来读取所有这些dll中的字符串,对这些字符串进行一些分析。 .net反射器只显示字符串! – siva 2010-09-30 03:57:36
我认为如果反射器显示数据是步骤的一半,请尝试将dll加载到动态变量中,并调用.Net反射器中提到的方法。如果还不清楚,只要求我详细讲解。 – 2010-09-30 04:03:46
是的,不需要动态hehehe,但有一天,我会找到一些它适合hehehe,顺便说一句....这个解决方案应该工作 – 2010-09-30 04:14:04
是的,它确实列出在RM资源,但我没有知道字符串表中的ID。那么我如何在GetString中使用它? – siva 2010-09-30 04:48:19
我需要列出ID和值! – siva 2010-09-30 04:48:35