【问题标题】:Load application icon through resource通过资源加载应用程序图标
【发布时间】:2010-10-14 11:51:57
【问题描述】:

这是我所做的:

我使用我的 IDE (SharpDevelop) 创建了一个resource.resx 文件,并向其中添加了一个logo.ico。 resource.resx 文件如下所示:

<data name="logo" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAA... (etc etc)

然后我使用ResGen.exe 将这个resource.resx 编译成一个有效的resource.resources 文件。

resgen.exe resource.resx resource.resources

使用命令行 JScript.NET 编译器,我编译了所有内容并包含了我的 resource.resources,其中包含我的徽标文件。

jsc /res:resource.resources /out:app.exe /reference:UI.dll,Remote.dll app.cs

现在我想通过我的代码访问这个徽标文件,所以我得到了这个:

System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
System.Drawing.Icon icon = new System.Drawing.Icon(assembly.GetManifestResourceStream("resource.resources.logo"));

但是我得到了 GetManifestResourceStream 的运行时异常,它为空。

我想这是一个命名空间问题,所以我尝试仅使用 GetManifestResourceStream("resource.resources") 访问资源文件,但我得到了另一个异常:

Argument 'picture' must be a picture that can be used as a Icon.

任何想法将不胜感激,谢谢!

【问题讨论】:

    标签: .net resources jscript.net


    【解决方案1】:

    它正在抱怨文件格式,它不将其识别为图标。我无法从你的 sn-p 中看出,base64 编码的值不够可见。

    我不得不说,如果这个 IDE 让你编写这样的代码,那么它不会帮助你。在 Visual Studio 中将图标存储在资源中非常简单,根本不需要编写任何代码。 Express 版价格​​相同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-21
      • 2015-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多