从二进制.resources文件中提取图标

时间:2018-12-04 12:29:21

标签: c#

我们创建了一个名为SharedIcons.resources的二进制.resources文件,该文件仅包含图标,并且由resgen.exe从resx文件创建。我们想在其他C#应用程序中使用此.resources文件中包含的图标,但是我无法弄清楚如何将这些图标撤回,例如用于表单按钮等。

我尝试过类似的事情:

string resFile = "SharedIcons.resources";
ResourceManager resMan =  new ResourceManager(resFile, Assembly.GetExecutingAssembly());
Image image = (Bitmap) resMan.GetObject("ID_ICON");

但是收到错误:

System.Resources.MissingManifestResourceException: 'Could not find any resources appropriate for the specified culture or the neutral culture.  Make sure "SharedIcons.resources.resources" was correctly embedded or linked into assembly "WindowsFormsApp7" at compile time, or that all the satellite assemblies required are loadable and fully signed.'

SharedIcons.resources是可执行文件旁边的文件。不太确定我在做什么错或如何做到这一点,似乎应该很容易。是否可以在设计时和运行时执行此操作?如果可以,怎么办?

1 个答案:

答案 0 :(得分:1)

弄清楚了,对于位于程序可执行文件旁边的SharedIcons.resources(非嵌入式)文件,您可以执行以下操作:

var newResourceManager = ResourceManager.CreateFileBasedResourceManager("SharedIcons", Directory.GetCurrentDirectory(), null);
var ico1 = (Icon)newResourceManager.GetObject("ID_ICON");