向.NET-Application添加多个图标(Win32-Resource)

0xD*_*EEF 18 .net c# icons .net-assembly

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

改变图标

我希望有我的程序使用的文件类型的特殊图标.关联filetype-icon我可以在注册表中指定它("DefaultIcon"键中的"MyProg.exe,1").

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

非常感谢你

ps:它是一个WPF应用程序(.NET 4.0)

Han*_*ant 16

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"
Run Code Online (Sandbox Code Playgroud)

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

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

rc /r something.rc
Run Code Online (Sandbox Code Playgroud)

这会生成您可以在项目属性选项卡中使用的.res文件.这样做是预建事件是可取的,但有点难以正确.这可能出错的方式很多,祝你好运.


Ein*_*son 11

我刚刚创建了一个简单的工具来完成这个,而不必乱用.res文件.它是一个很小的实用程序,您可以将其用作Post-Build事件的一部分,并允许您将特定文件夹中的所有图标文件添加到程序集中.如果我们假设您的主项目文件夹下有一个icons文件夹,则可以添加以下post-build事件:

C:\path\to\InsertIcons.exe $(TargetPath) $(ProjectDir)icons
Run Code Online (Sandbox Code Playgroud)

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