我基本上遇到与此问题相同的问题:Embed multiple icons in WPF EXE
当您单击资源管理器中的“更改图标”时,我的.NET 2.0 WinForms应用程序当前具有此功能:
我希望看到的内容,以及上述文章中提到的一些黑客行为,我得到了这个:
但是,获取程序集的所有版本信息的过程将丢失。我需要在程序集中维护版本信息,因为我的自动更新过程依赖于此来识别应用程序的已安装版本。
我还通过持续集成流程构建应用程序,因此我不希望任何需要手动干预的步骤,这是否可以自动化?
答案 0 :(得分:7)
我刚刚创建了一个简单的工具来完成这一操作,而不必弄乱.res文件。它是一个很小的实用程序,您可以将其用作Post-Build事件的一部分,并允许您将特定文件夹中的所有图标文件添加到程序集中。如果我们假设您在主项目文件夹下有一个icons文件夹,则可以添加以下构建后事件:
C:\path\to\InsertIcons.exe $(TargetPath) $(ProjectDir)icons
可以在http://einaregilsson.com/add-multiple-icons-to-a-dotnet-application/
找到进一步的说明和下载答案 1 :(得分:3)
ChrisF提到的文章也将删除你的程序集版本信息。按照该指南操作后,您可能需要尝试使用此处所述的构建后方法http://blogs.msdn.com/b/cheller/archive/2006/08/24/718757.aspx来嵌入清单。
编辑:
这是“方法#2 - ”通用“方法(使用mt.exe)”
答案 2 :(得分:2)
此Code Project article详细介绍了如何执行此操作。
基本上,您为项目添加了更多图标资源。
答案 3 :(得分:1)
对我来说,解决该问题的最简单方法是创建一个.res文件,其中只包含您需要的图标(并按照您的首选顺序存储它们),禁用项目属性中的主图标并合并以前准备好的图标包(。 res文件)到你的最终.exe文件,在post-build事件中完成。虽然,如果此过程可以完全自动化并保持清单数据不变,则最后一步需要一个外部工具( ResHacker ),它允许您通过命令行执行.res文件合并作业(当然,Visual Studio可以做到这一点,但据我所知,没有命令行界面来实现它 - 如果我错了,请纠正我。)
下载空白.res文件(http://www.codeproject.com/Tips/160885/How-to-Embed-Multiple-Icons-and-Color-Animated-Cur.aspx)并将其添加到您的项目中
使用您的图标填写以前添加的.res文件
从项目中删除主图标(项目 - >属性)
下载 ResHacker 工具(http://www.angusj.com/resourcehacker/)并将其放在任意位置
在构建后的事件中添加类似的行:
if $(ConfigurationName) == Release (
..\..\..\..\..\Tools\ResHack\ResHacker.exe -add $(TargetPath), $(TargetPath), $(ProjectDir)Properties\AssemblyWin32.res ,,,
)
这就是全部。每次在发布模式下编译项目时,您都会获得目标.exe文件的通缉图标。