更改 F# 应用程序图标

9
我正在使用Visual Studio 2013和F#来开发Windows应用程序,但我无法更改默认应用程序图标。
我尝试创建一个C#-WPF应用程序用于前端,它能够正常工作。但我不想使用C#来做前端。
我在构建我的应用程序之后尝试使用资源编辑器,但它根本不起作用。

3个回答

11

应用程序图标是在查看EXE文件时出现在Windows资源管理器中的图像。要设置F# Windows应用程序的应用程序图标:

  1. 创建一个带有*.rc扩展名的文本文件。

  2. 在*.rc文件中添加一行(当然要替换您的图标文件名):1 ICON "icon.ico"

  3. 使用rc.exe编译*.rc文件为*.res文件。

  4. 在Visual Studio中,在*.exe项目的属性页面中,将*.res文件设置为项目的"Resource file"。

顺便提一下,在Windows任务栏中显示的图标来自主窗口图标。可以这样设置:

  1. 将图标作为资源(而不是嵌入式资源)包含在项目中。
  2. 在主窗口XAML中,使用程序集路径引用图标。

示例:

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Icon="/MyAssemblyName;component/MyPathToIcons/Logo.ico">

2
这里有一个有用的补充:为了使其正常工作,您需要在VS中安装Visual C++选项,因为只有安装了它才能使用rc.exe。我花了相当长的时间才发现这就是为什么我在系统上找不到rc.exe的原因。一旦安装完成,按照您的说明操作就很容易了。 - David Arno
我不记得曾经需要使用Visual C++才能在计算机上获取rc.exe。我现在检查了我的VS安装,但是C++没有被任何地方选中。 - Bent Tranberg
今天我们可以在SDK风格的项目中简单地使用ApplicationIcon,只需一个图标文件即可。对于控制台应用程序,此图标将在文件、任务栏和控制台窗口中使用。可能需要较新版本的Windows支持。 - Bent Tranberg

-1

我猜你正在尝试设置命令行应用程序的图标。这是不可能的。只有桌面应用程序才有图标。控制台应用程序没有窗口,因此也没有图标。您可以在创建应用程序的快捷方式时指定图标(例如在安装过程中),但这与应用程序本身无关。

Visual Studio 2013仅包含F#控制台应用程序。如果要创建WPF应用程序,您应该使用不同的模板,例如Daniel Mohl的F# Empty Windows App模板。

该模板不提供与C# WPF项目相同的项目设置,但您可以使用所有WPF机制来设置图标,例如通过将应用程序的图标存储在资源中,设置窗口的图标属性等。


2
我正在开发 Windows 应用程序(WPF),而不是命令行应用程序。我想知道如何在 F# Wpf Windows 应用程序中设置应用程序图标(exe 图标)。 - Umut Karakoç
3
实际上,第一个图标资源在可执行文件中是可以使用的,Windows 使用它在资源管理器中显示(你可以在控制台 C# 应用程序的“属性”中选择它,或者对于 F# 应用程序,可以使用 Wally 的方法)。这与该应用程序是否为控制台应用程序无关,除非你指的是旧的 16 位应用程序或 *.com 程序。 - Abel

-1
Title="MVVM and XAML Type provider" Height="200" Width="400" Icon="C:\Users\Honu\AppData\Local\Microsoft\Windows\INetCache\IE\4JGLDZVB\favicon8C20UVN3.ico">

这会显示一个Lambda符号图标...

我使用了Daniel Mohl的F#空Windows应用程序模板。 只需添加Icon=等

希望这可以帮到你


1
这与原始答案的第二部分相同,只是原始答案使用了相对路径(在项目中永远不要使用绝对路径,因为一旦移动它就会出错)... - Abel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接