我的公司有一个品牌机制,可以为Windows应用程序设置图标,如下所示:
if (AppBranding.Is("FOO"))
Icon = MyProject.Properties.Resources.Icon_FOO;
else
Icon = MyProject.Properties.Resources.Icon_BAR;
Icon_FOO
和Icon_BAR
是指向各自.ico文件的资源。
此外,项目中的图标和清单> MyProject属性>资源在Visual Studio中设置。
当用户启动应用程序时,会根据品牌显示正确的图标。但是,如果他们将程序固定到任务栏,则无论品牌如何,该图标都会恢复为Icon_FOO.ico。当它们取消固定时,图标会切换回来。
我认为固定到任务栏的程序使用.exe的图标,而Window的图标是我设置的Form.Icon
。我只知道如何通过转到Project Properties>来设置.exe图标。资源并从下拉列表中进行选择,如上图所示。如何动态设置.exe的图标?
答案 0 :(得分:1)
任务栏中的图标(通常)是程序集中可用的第一个图标资源,无法在应用程序中进行修改(除非您以编程方式创建自定义快捷方式)。
您可以使用每个品牌版本的正确图标和版本属性创建一个简单的入门应用程序(* .exe),而不是尝试操作它。 .exe不仅需要从包含实际应用程序内容的程序集加载应用程序。
所以你有
Launcher_FOO.exe
Launcher_BAR.exe
带有自己的自定义图标。两个应用程序都将从
创建一个通用应用程序Actual_Application.dll
启动应用程序。
您可以使用Reflection.Emit
动态创建Launcher_xxx.exe:
请参阅msdn