也许我误解了Assembly.GetManifestResourceNames()的含义.我想浏览我的应用程序的资源,这就是我正在做的事情:
foreach (string res in System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceNames())
{
Console.WriteLine(res);
}
Run Code Online (Sandbox Code Playgroud)
我的应用程序有几个图像资源,我希望上面的代码列出他们的名字.相反,我得到的只是这个输出:
我弄错了什么?
我的应用程序有几个图像资源
确实如此,但它们存储在.resx文件中.像frmMain.resx.该文件被转换为"blob",即单块二进制数据.由Resgen.exe生成,它具有.resources文件扩展名.并且该 blob被添加为明显资源.您可以使用代码查看.resources blob.
在blob中找回原始资源是ResourceReader类的工作.您可以在for-each循环中使用它来枚举原始资源.但是您通常使用ResourceManager类,这是ResourceReader之上的额外层.它支持本地化,从卫星文件中读取资源.Winforms使用ComponentResourceManager,一个派生类,并自动调用ApplyResources().您可以在InitializeComponent()方法中看到这一点.