发布
社区首页 >问答首页 >如何为f#应用程序设置Windows资源管理器图标

如何为f#应用程序设置Windows资源管理器图标
EN

Stack Overflow用户
提问于 2019-10-29 05:02:24
回答 3查看 185关注 0票数 2

如何使用.NET Core3.0或3.1创建一个简单的f# netcoreapp。在Windows资源管理器中查看时会显示应用程序图标吗?

这就像是提出了一个问题,before,但解决方案似乎不适用于使用.NET Core3.0或3.1SDK构建的应用程序。

我已经创建了一个资源文件,并尝试使用命令行编译应用程序并添加图标资源:

fsc Program.fs --win32res:AppIcon.res --目标:exe

在这种情况下,应用程序可以编译,但我没有看到Windows资源管理器图标。

我还尝试使用带有以下fsproj文件的dotnet cli进行构建和发布(dotnet publish ConsoleApp1.fsproj -c版本--自包含的-r win7-x64 -o发布)

在这种情况下,项目不能编译,并且我得到一个错误消息"error MSB4018: the "CreateAppHost“task unexpectedly”。

任何帮助都将不胜感激!

代码语言:javascript
代码运行次数:0
复制
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <Win32Resource></Win32Resource>
  </PropertyGroup>
 
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
    <OtherFlags>--win32res:AppIcon.res</OtherFlags>
  </PropertyGroup>

  <ItemGroup>
    <EmbeddedResource Include="Resources\rebalance.ico" />
    <Resource Include="AppIcon.res">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Resource>
    <Compile Include="Program.fs" />
  </ItemGroup>
</Project>

EN

回答 3

Stack Overflow用户

发布于 2019-10-29 12:04:02

看起来我已经找到问题所在了。我返回并查看Visual Studio中的资源文件,发现该文件似乎存在问题?

我使用了"C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64\rc.exe“/v AppIcon.rc来生成res文件。也许它被破坏了?即使在这种状态下,我仍然可以在Visual Studio中查看ico。无论如何,我从res中删除了损坏的ico文件,然后通过Visual Studio手动将其添加回来。这一次,Visual Studio似乎识别出了该文件。

我使用了这个res文件来继续我的工作。我重新运行了命令行dotnet publish TestIconRes.fsproj -c Release --self-contained win7-x64 -r -o publish,这一次应用程序图标在-r资源管理器中可见。

fsc Program.fs --win32res:AppIcon.res也可以。

最终的fsproj文件如下:

代码语言:javascript
代码运行次数:0
复制
<Project Sdk="Microsoft.NET.Sdk">
  
  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <Win32Resource></Win32Resource>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
    <OtherFlags>--win32res:AppIcon.res</OtherFlags>
  </PropertyGroup>

  <ItemGroup>
    <Compile Include="Program.fs" />
  </ItemGroup>
</Project>

票数 2
EN

Stack Overflow用户

发布于 2019-10-29 10:11:53

尝试一下(使用项目文件夹中的.ico文件):

代码语言:javascript
代码运行次数:0
复制
  <PropertyGroup>
    <ApplicationIcon>rebalance.ico</ApplicationIcon>
  </PropertyGroup>
  <ItemGroup>
    <Content Include="rebalance.ico">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
  </ItemGroup>
票数 1
EN

Stack Overflow用户

发布于 2019-11-08 05:37:34

我也发现了这个问题,并按照Scott Hutchinson作为解决方案的建议,在.NET核心中为PropertyGroup提交了一个问题。

https://github.com/dotnet/core/issues/3771

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58598369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档