Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从二进制.resources文件中提取图标_C# - Fatal编程技术网

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

C# 从二进制.resources文件中提取图标,c#,C#,我们创建了一个名为SharedIcons.resources的二进制.resources文件,它只包含图标,由resgen.exe从resx文件创建。我们希望在其他C#应用程序中使用此.resources文件中包含的图标,但我不知道如何将图标恢复,以便在表单按钮等上使用 我试过这样的方法: string resFile = "SharedIcons.resources"; ResourceManager resMan = new ResourceManager(resFile, Assembl

我们创建了一个名为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是可执行文件旁边的文件。我不确定我做错了什么,也不知道如何做到这一点,看起来应该很容易。是否可以在设计时和运行时执行此操作?如果是这样的话,如何解决呢?

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

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

关于
ResourceManage
构造函数的第一个字符串参数,文档说明了什么?你至少读过一个例外吗<代码>确保“SharedIcons.resources.resources”…+brain=solution谢谢Selvin,非常有用。我是否可以在不将资源文件嵌入正在执行的程序集中并在运行时直接从binary.resources文件读取图标的情况下实现这一点?方法是直接从支持的文件加载图像。。查看图像类的文档。。。搜索静态方法您需要ResourceReader类从.resources文件中挖掘图标。这通常是一个错误,.resources文件是构建工件。总是喜欢嵌入文件,这样你就可以利用内存映射文件来加载它们。谢谢Hans,这为我指明了正确的方向。塞尔文,你的回答是傲慢和无益的。