Как установить значок проводника Windows для приложения f # - PullRequest
2 голосов
/ 29 октября 2019

Как мне создать простой f # netcoreapp, используя .NET Core 3.0 или 3.1. а значок приложения отображается при просмотре в проводнике Windows?

Это похоже на вопрос, заданный перед , но решения, похоже, не работают для приложения, созданного с использованием .NET Core 3.0 или 3.1 sdks.

Я создал файл ресурсов и попытался скомпилировать приложение и добавить ресурс значков с помощью командной строки:

fsc Program.fs --win32res: AppIcon.res --target:exe

В этом случае приложение компилируется, но у меня нет значка проводника Windows.

Я также пытался создать и опубликовать, используя dotnet cli, с файлом fsproj ниже (dotnetопубликовать ConsoleApp1.fsproj -c Выпуск - самодостаточный -r win7-x64 -o опубликовать)

В этом случае проект не компилируется, и я получаю сообщение об ошибке "MSB4018: сбой задачи" CreateAppHost "неожиданно ".

Любая помощь будет принята с благодарностью!

<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>

Ответы [ 3 ]

2 голосов
/ 29 октября 2019

Похоже, мне удалось выяснить проблему. Я вернулся и посмотрел на файл ресурсов в Visual Studio и обнаружил, что, кажется, есть и проблема с файлом?

enter image description here

Я использовал«C: \ Program Files (x86) \ Windows Kits \ 10 \ bin \ 10.0.18362.0 \ x64 \ rc.exe» / v AppIcon.rc для создания файла res. Может быть, это было повреждено? Я все еще мог просматривать ico в Visual Studio даже в этом состоянии. В любом случае я удалил поврежденный файл ico из res, а затем добавил его обратно через Visual Studio вручную. На этот раз оказалось, что Visual Studio распознает файл.

enter image description here

Я использовал этот файл res, чтобы продолжить свои усилия. Я перезапустил командную строку dotnet publish TestIconRes.fsproj -c Release - сам содержал -r win7-x64 -o publish, и на этот раз значок приложения был виден из проводника Windows.

fsc Program.fs --win32res: AppIcon.res также работает.

Окончательный файл fsproj приведен ниже:

<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>
1 голос
/ 29 октября 2019

Попробуйте это (с файлом .ico в папке вашего проекта):

  <PropertyGroup>
    <ApplicationIcon>rebalance.ico</ApplicationIcon>
  </PropertyGroup>
  <ItemGroup>
    <Content Include="rebalance.ico">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
  </ItemGroup>
0 голосов
/ 08 ноября 2019

Я также обнаружил эту проблему и подал ее в .NET Core для PropertyGroup, как Скотт Хатчинсон предложил в качестве решения.

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

...