我已經說了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