我周围有6个dll(没有源代码)。 它们不包含任何逻辑,只包含包含字符串表的.resx文件。
有没有一种方法可以从每个dll的字符串表中提取Id和值并将其导出到文本文件?
答案 0 :(得分:6)
了解程序集名称和资源文件,可以使用反射加载它。
// 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();
}
如果您无权访问资源库,那么您可以通过Leo提到的Reflector查看名称空间,类以及其他所有内容。
答案 1 :(得分:1)
我不知道它是否可行,但尝试使用.Net Reflector http://reflector.red-gate.com/