以编程方式读取资源字符串

时间:2010-09-30 03:27:55

标签: c#

我周围有6个dll(没有源代码)。 它们不包含任何逻辑,只包含包含字符串表的.resx文件。

有没有一种方法可以从每个dll的字符串表中提取Id和值并将其导出到文本文件?

2 个答案:

答案 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/