0
我们想列出C#中的非托管资源库(DLL)的内容(键/值对)。
(请注意,资源DLL是不是 .NET程序集/ DLL)使用C#列出存储在非托管资源库DLL中的消息ID和名称
按规定in MSDN资源库的定义。
mc -s EventLogMsgs.mc
rc EventLogMsgs.rc
link /DLL /SUBSYSTEM:WINDOWS /NOENTRY /MACHINE:x86 EventLogMsgs.Res
样本EventLogMsgs.mc可能是:
; // - Event categories -
; // Categories must be numbered consecutively starting at 1.
; // ********************************************************
MessageId=0x1
Severity=Success
SymbolicName=INSTALL_CATEGORY
Language=English
Installation
.
MessageId=0x2
Severity=Success
SymbolicName=QUERY_CATEGORY
Language=English
Database Query
.
...
如果该资源库DLL是一个.NET程序集DLL,上市资源将使用这些方针的东西来完成:
string strResourceDLLPath = "c:\\temp\\EventLogMsgs.DLL";
Assembly resAssembly = Assembly.LoadFrom(strResourceDLLPath);
ResourceManager resMgr = new ResourceManager("ResourcesLib.Messages", resAssembly);
ResourceSet resSet = resMgr.GetResourceSet(System.Globalization.CultureInfo.CurrentCulture, true, true);
foreach (DictionaryEntry r in resSet)
Console.WriteLine("Key={0} Value={1}", r.Key.ToString(), r.Value.ToString());
谢谢!
'ResourceManager'用于管理资源。 –
同意,ResourceManager不能用于此目的。代码片段仅仅是我们试图为非托管资源实现的一个演示。 – alexg
我认为你必须使用win32 api。 –