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

siv*_*iva 4 c#

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

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

Bru*_*oLM 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");
Run Code Online (Sandbox Code Playgroud)

要列出所有键和值,您可以使用 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();
}
Run Code Online (Sandbox Code Playgroud)

如果您无权访问资源库,您可以通过Leo提到的Reflector查看名称空间,类和其他所有内容.