Rai*_*olt 5 .net c# windows-applications
我的公司有一个品牌机制,可以为Windows应用程序设置图标,如下所示:
if (AppBranding.Is("FOO"))
Icon = MyProject.Properties.Resources.Icon_FOO;
else
Icon = MyProject.Properties.Resources.Icon_BAR;
Run Code Online (Sandbox Code Playgroud)
Icon_FOO并且Icon_BAR是指向各自.ico文件的资源.
此外,在Visual Studio中设置Project> MyProject Properties> Resources中的Icon和清单.

当用户启动应用程序时,会根据品牌显示正确的图标.但是,如果他们将程序固定到任务栏,则无论品牌如何,图标都会恢复为Icon_FOO.ico.当他们取消固定时,图标会切换回来.
我认为固定到任务栏的程序使用.exe的图标,而Window的图标是我设置的任何内容Form.Icon.我只知道如何通过转到项目属性>资源并从下拉列表中进行选择来设置.exe图标,如上图所示.如何动态设置.exe的图标?
任务栏中的图标(通常)是程序集中第一个可用的图标资源,并且无法在应用程序内进行修改(除非以编程方式创建自定义快捷方式)。
您可以创建一个简单的入门应用程序 (*.exe),并为每个品牌版本提供正确的图标和版本属性,而不是尝试操纵它?.exe 只需要从包含实际应用程序内容的程序集中加载应用程序。
所以你有了
Launcher_FOO.exe
Launcher_BAR.exe
Run Code Online (Sandbox Code Playgroud)
有他们自己的自定义图标。两个应用程序都将创建一个通用应用程序
Actual_Application.dll
Run Code Online (Sandbox Code Playgroud)
启动应用程序。
您可以使用Reflection.Emit动态创建 Launcher_xxx.exe:
看谷歌搜索
参见MSDN