如何将多个图标(Win32资源)添加到.NET应用程序?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (50)

可以在项目属性中设置应用程序图标。如果你这样做的exe文件将有这个图标,而不是默认的。这个图标是一个win32资源,也可以这样访问:

我想为我的程序使用的文件类型设置特殊的图标。关联一个文件类型图标,我可以在注册表中指定它(在“DefaultIcon”键中的“MyProg.exe,1”)。

所以如何将更多的图标添加到程序集中,我可以将它用于filetype-association?

这是一个WPF应用程序(.NET 4.0)

提问于
用户回答回答于

Windows不知道任何有关托管资源的信息,需要将非托管资源添加到可执行文件中。在parapura的屏幕截图中,需要选择Resource file单选按钮。这需要一个.res文件,这是一个通过在.rc文件上运行Windows SDK rc.exe工具创建的二进制文件。.rc文件是一个简单的文本文件,其中包含资源语句,类似于:

1 ICON "mainicon.ico"
2 ICON "alternative1.ico"
3 ICON "alternative2.ico"
1 24 "app.manifest"

请务必将此文件保存到没有utf-8编码的项目文件夹中,最好使用记事本。使用Project +添加新项目,应用程序清单文件创建所需的app.manifest文件。使用Project + Add Existing Item将此.rc文件添加到项目。双击它并确认可以看到图标和清单。右键单击顶部节点添加资源,然后单击版本+新建。编辑版本信息,注意它不再自动匹配AssemblyInfo.cs中的属性

可以使用Visual Studio命令提示符将.rc文件编译为.res文件:

rc /r something.rc

其中会生成可在项目属性选项卡中使用的.res文件。这样做是预先建立事件是可取的,但有点难以正确。

用户回答回答于

我刚刚创建了一个简单的工具来完成此操作,而不必混淆.res文件。这是一个小实用程序,可以将其用作生成后事件的一部分,并允许将特定文件夹中的所有图标文件添加到程序集中。如果我们假设主项目文件夹下有一个图标文件夹,则可以添加以下后构建事件:

C:\path\to\InsertIcons.exe $(TargetPath) $(ProjectDir)icons

有关详细说明和下载,请访问http://einaregilsson.com/add-multiple-icons-to-a-dotnet-application/

扫码关注云+社区