2

据我所知,至少存在三种类型的图标嵌入。有shell32.dll和朋友使用的原始样式,.NET的嵌入以及WPF使用的新类型。我正在寻找如何执行第一个,因为我希望有一些其他图标可用作跳转列表的资源,它只能接受该样式。但是,我无法弄清楚如何嵌入这种风格,只有其他两种。如何在Visual Studio 2010中执行“shell”图标嵌入?

我该怎么做?我在谷歌等找到的所有结果都是为ResX文件或类似图标添加图标。

回答

3

我从来没有听说过“图标嵌入”之前。如果您正在讨论在资源管理器或桌面快捷方式中EXE或DLL可见的图标,那么对于任何Windows程序都是这样做的。 WF和WPF都使用/ win32res编译选项为程序集提供了一个带有选定图标的非托管资源。您可以在Visual Studio中使用File + Open + File查看它,选择EXE或DLL。

要创建.res文件,请首先创建一个.rc文件。您可以使用C++ IDE创建一个。右键单击该解决方案,添加新项目,Visual C++,Win32,Win32控制台应用程序。右键单击资源文件文件夹,添加+资源,选择图标,导入。选择你的文件。根据需要重复。在生成之后,您将在项目的Debug build目录中获得一个.res文件。

回到C#项目,Project + Properties,Application选项卡。选择资源文件选项并导航到.res文件。

+1

请原谅我,如果我的术语不正确,不知道要搜索什么是问题的一部分。按照您所描述的方式打开VS中的程序集,我可以看到应用程序自己的图标,这就是我所说的;但是,我想知道如何在构建过程中自动添加其他图标。 – JustABill 2010-06-07 21:57:37

+0

@Just:发布更新。 – 2010-06-07 22:28:18

3

我强烈建议看看这里发布的解决方案(http://einaregilsson.com/add-multiple-icons-to-a-dotnet-application/)。它直接集成到ms build build post事件中,并且不需要非托管项目(从.rc/.res文件创建程序集)。

随时更新图标并从IL保存您合并编译的C++程序集时,可以消除对管理第二个解决方案/程序集的依赖。

我还建议看看WIX的部署。我已经写了一个指南,伴随着这个答案位于here

+1

这是一个非常有用的帖子,用于将图标添加到JumpList图标。 – Echilon 2012-07-20 09:29:17