Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为Windows应用程序动态设置任务栏图标_C#_.net_Windows Applications - Fatal编程技术网

C# 为Windows应用程序动态设置任务栏图标

C# 为Windows应用程序动态设置任务栏图标,c#,.net,windows-applications,C#,.net,Windows Applications,我的公司有一个为Windows应用程序设置图标的品牌机制,如下所示: if (AppBranding.Is("FOO")) Icon = MyProject.Properties.Resources.Icon_FOO; else Icon = MyProject.Properties.Resources.Icon_BAR; Icon\u FOO和Icon\u BAR是指向各自.ico文件的资源 此外,Visual Studio中还设置了Project>MyProject属性”>

我的公司有一个为Windows应用程序设置图标的品牌机制,如下所示:

if (AppBranding.Is("FOO"))
    Icon = MyProject.Properties.Resources.Icon_FOO;
else
    Icon = MyProject.Properties.Resources.Icon_BAR;
Icon\u FOO
Icon\u BAR
是指向各自.ico文件的资源

此外,Visual Studio中还设置了Project>MyProject属性”>“资源中的图标和清单

用户启动应用程序时,会根据品牌显示正确的图标。但是,如果他们将程序固定到任务栏上,图标将恢复为icon_FOO.ico,而与品牌无关。当他们解除锁定时,图标将切换回原位


我相信固定在任务栏上的程序使用的是.exe图标,而窗口的图标是我设置的
Form.icon
。我只知道如何通过转到“项目属性”>“资源”并从下拉列表中进行选择来设置.exe图标,如上图所示。如何动态设置.exe的图标?

任务栏中的图标(通常)是程序集中可用的第一个图标资源,不能从应用程序中修改(除非以编程方式创建自定义快捷方式)

您可以创建一个简单的初学者应用程序(*.exe),该应用程序具有每个品牌版本的正确图标和版本属性,而不是试图对此进行操作?.exe不仅仅需要从包含实际应用程序内容的程序集加载应用程序

你有吗

Launcher_FOO.exe
Launcher_BAR.exe
有自己的自定义图标。这两个应用程序都将从中创建一个公共应用程序

Actual_Application.dll
启动应用程序

您可以使用
Reflection.Emit
动态创建启动器_xxx.exe:


请参见

我在试图让StackOverflow更容易阅读时,可能将问题中的示例过于简化了。我们的客户得到一个无品牌的应用程序。他们提供了一个包含该品牌的许可文件,突然所有相关的横幅和图标都改变了。您的解决方案要求在编译时知道品牌,而我们只能在运行时知道品牌。最重要的是,在有人决定将程序固定到任务栏之前,我们的解决方案一直运行良好。我需要一种动态方式来更改任务栏图标。@John,好的,我理解你的要求,但我认为没有一种动态解决方案可以做到这一点,而不改变快捷方式或二进制本身(考虑到病毒扫描程序等检查这类东西的功能,这不是一个很好的解决方案)。如果您的应用程序已签名,则在不辞职的情况下无法修改应用程序。