我需要对此非常清楚。我不是要读取myfile.resx文件。我正在尝试从myresourcenamespace.myfile.dll中读取内容。
我希望通过访问预先加载到DLL中的内容来创建RESX内容中包含的KVP字典。我当前的解决方案过分依赖于现有的文件和一堆复制,以确保文件是他们需要的位置。此时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 :(得分: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;
}