如何在。#中将.ico导入.exe? (我想只有一个文件)
在资源文件中我有:icon.ico
当我点击该图标时,在我拥有的属性中:"嵌入式资源"
我应该做什么(改变)?
(('a', 'b'))
以及我如何使用相对路径?
感谢
答案 0 :(得分:2)
答案 1 :(得分:0)
我来到这里寻找有关在输出程序集/可执行文件中嵌入图标的书面解决方案。但是这个被接受的答案并没有真正解释任何事情,除非您知道答案与作为概念的代码的关系。对于代码部分,Jonas 给出的链接也同时失效。
设为嵌入资源
但另一种方法是通过右键单击解决方案中的图标文件,将解决方案中的图标文件(最好是)设置为嵌入资源。并将字段“构建操作”设置为“嵌入式资源”。默认设置为“内容”,这使得图标文件在 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 x 48px 到 256px x 256px)。否则它会显示一个调整大小/放大的图标。
在应用程序属性级别设置图标
最后,通过在项目上单击右键(在解决方案资源管理器中)设置项目的图标,然后单击:属性 - 应用程序。在“资源”中选择解决方案中的 .ico 文件。由于它以这种方式嵌入到程序集中,因此不需要 bin / output 文件夹中的复制版本。但我假设输出程序集现在包括两个图标,一个作为嵌入资源,一个隐藏在程序集字节中的某个地方......因为遗漏其中一个会破坏图标显示功能,显示默认图标或不加载嵌入资源图标。这个答案的好处是,作为输入,只有一个图标文件,最适合维护它。
您机器上可能的故障是 Windows 的图标缓存
可能是机器的图标缓存有问题。这主要发生在开发应用程序和切换图标时,显示以前/以前的图标。在 Internet 上搜索“重置图标缓存窗口”,或此处的示例 https://www.windowscentral.com/how-reset-icon-cache-database-windows-10。