2011-07-07 39 views
0

我需要清楚这一点。我不想读取myfile.resx文件。我正在尝试从myresourcenamespace.myfile.dll中读取内容。从加载的DLL中读取RESX内容而不是RESX文件

我的希望是创建一个包含在RESX内容中的KVPs的字典,通过访问预先加载到DLL中的KVPs。我目前的解决方案太依赖于存在的文件和一堆复制,以确保文件是他们需要的地方。此时DLL更加可靠。

我已经能够通过“new resourcemanager(myassemblytype)”获得对程序集的访问权限,但我坚持了这一点。我似乎无法从内存中读取实际的内容。当我尝试从资源管理器以流的形式访问内容时,我不断遇到MissingManifestException。

这里是我的成功代码:

var myType = Type.GetType("ViewRes.StaticMessages", true); 
var myResManager = new ResourceManager("StaticMessages", 
          System.Reflection.Assembly.GetAssembly(myType)); 

这里是我的失败代码:

using (var fileReader = new ResXResourceSet(
          myResManager.GetStream(myResManager.BaseName))) 
{ 
//.... code read here 
} 

的ResXResourceSet投MissingManifestException。我尝试了所有我能想到的。

回答

0

相反的:

var myType = Type.GetType("ViewRes.StaticMessages", true); 
var myResManager = new ResourceManager("StaticMessages", 
         System.Reflection.Assembly.GetAssembly(myType)); 

尝试这样的:

var myType = Type.GetType("ViewRes.StaticMessages", true); 
var myResManager = new ResourceManager("StaticMessages", myType.Assembly); 
// you could specify the desired culture for which you would like to get the 
// resource values 
var culture = CultureInfo.InvariantCulture; 
var resourceSet = myResManager.GetResourceSet(culture, true, true); 

现在可以循环:

foreach (DictionaryEntry item in resourceSet) 
{ 
    var key = item.Key; 
    var value = item.Value; 
} 
+0

这看起来前途无量。虽然一旦申请,我仍然遇到相同的“MissingManifestResourceException”。 – itanex

+0

GetResourceSet,GetObject,GetStream都为我生成这个异常 – itanex