c#如何在.exe中添加图标

本文关键字:添加 图标 exe | 更新日期: 2023-09-27 18:01:31

如何在c#中导入。ico到。exe ?(我想只有一个文件)

在资源文件中我有:icon.ico

当我点击那个图标时,在属性中我有:"嵌入式资源"

我该怎么做(改变)?

trayIcon.Icon = new Icon("c:''users''wulp''documents''visual studio 2013''Projects''WifiSwitch''WifiSwitch''Resources''icon.ico");

和如何使用相对路径?

谢谢

c#如何在.exe中添加图标

我降落在这里寻找关于在输出程序集/可执行文件中嵌入图标的书面解决方案。但是这个公认的答案并不能真正解释任何事情,除非你知道这个答案是如何将代码作为一个概念联系起来的。对于代码部分,Jonas给出的链接也同时死亡。

设置为嵌入式资源

但另一种方法是通过右键单击解决方案中的图标文件,将解决方案中的图标文件(这是最好的)设置为嵌入式资源。并将"Build Action"字段设置为"Embedded Resource"。默认设置为"Content",这使得图标文件作为一个单独的文件出现在bin/output文件夹中。

然后在运行时通过代码从程序集/可执行文件加载图标。这与Jonas 可能想要链接的想法略有不同(因为他指的是项目属性中的资源)。

下面代码的用法是using System.Drawing;using System.IO;using System.Reflection;

      //note: this = the current windows form I'm setting the icon for, in my case.
        var assembly = Assembly.GetExecutingAssembly();//reflects the current executable
        var resourceName = $"{this.GetType().Namespace}.{this.ProductName}.ico";
        
      //note: this.ProductName reflects the executable's Product name in my solution (see current project, right click it, then click: properties - application - assembly information)
      //reading the source / icon file, in this case from the assembly (as the icon is embedded in here), but the icon can be loaded from anywhere at this point.
        using (Stream stream = assembly.GetManifestResourceStream(resourceName))
        {
            this.Icon = new Icon(stream);
        }

要在快捷方式或任务栏上显示正确的图标,请确保图标文件包含几种大小(从48px × 48px到256px × 256px不等)。否则,它会显示一个调整大小/放大的图标。

设置应用程序属性级别图标

最后,通过右键单击项目(在解决方案资源管理器中),然后单击:properties - application来设置项目的图标。在"参考资料"中选择解决方案中的.ico文件。由于它以这种方式嵌入到程序集中,因此不需要在bin/output文件夹中复制一个版本。但是我假设输出程序集现在包括两个图标,一个作为嵌入式资源,另一个隐藏在程序集的字节中…如果遗漏其中一个,则会中断图标显示功能,显示默认图标或不加载嵌入的资源图标。这个答案的好处是,作为输入,只有一个图标文件,这对于维护它是最好的。

你的机器可能出现故障是Windows的图标缓存

可能,机器的图标缓存可能是一个问题。这主要发生在开发应用程序和切换图标时,显示前一个/上一个图标。在互联网上搜索"重置图标缓存窗口",或者这里的示例https://www.windowscentral.com/how-reset-icon-cache-database-windows-10。

假设icon.ico在您的项目文件夹中,编辑您的.csproj文件:

<PropertyGroup>
  <ApplicationIcon>icon.ico</ApplicationIcon>
<PropertyGroup>
<ItemGroup>
  <Resource Include="icon.ico" />
</ItemGroup>

你必须添加你的图标作为一个资源。

见:https://msdn.microsoft.com/en-us/library/7k989cfy (v = vs.80) . aspx

当你将它添加为资源时,你可以指向它