Layers/shell/windows/LayersShell/LayersShell.csproj

53 lines
3.5 KiB
XML

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>
<TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
<RootNamespace>LayersShell</RootNamespace>
<ApplicationManifest>app.manifest</ApplicationManifest>
<Platforms>x64;ARM64</Platforms>
<RuntimeIdentifiers>win-x64;win-arm64</RuntimeIdentifiers>
<UseWinUI>true</UseWinUI>
<EnableMsixTooling>false</EnableMsixTooling>
<WindowsPackageType>None</WindowsPackageType>
<Nullable>enable</Nullable>
<LangVersion>latest</LangVersion>
<PublishReadyToRun>true</PublishReadyToRun>
<AssemblyName>Layers</AssemblyName>
<!-- Baked by the GenerateAppIcon target below before every build. If neither rsvg-convert
nor magick are on PATH, the file never gets produced and this reference stays elided
via the Condition — .NET just uses its default exe icon, build still succeeds. -->
<ApplicationIcon Condition="Exists('Assets\app.ico')">Assets\app.ico</ApplicationIcon>
<LayersIconSvg>$(MSBuildProjectDirectory)\..\..\..\resources\Layers.svg</LayersIconSvg>
<LayersIconOut>$(MSBuildProjectDirectory)\Assets\app.ico</LayersIconOut>
<LayersIconTmp>$(IntermediateOutputPath)icon_tmp</LayersIconTmp>
</PropertyGroup>
<ItemGroup>
<!-- If NuGet complains "package not found", bump this to the newest 1.5.* or 1.6.* listed
on https://www.nuget.org/packages/Microsoft.WindowsAppSDK. -->
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.5.240607001" />
</ItemGroup>
<!-- Acord's pattern: let the build system generate the icon so there's no ordering concern
between build.bat and dotnet publish, and no separate icon-shuffling step. Runs before
the compiler needs to open app.ico. Every Exec has ContinueOnError=true so a missing
tool degrades to "no icon" instead of a build failure. -->
<Target Name="GenerateAppIcon"
BeforeTargets="BeforeBuild"
Condition="Exists('$(LayersIconSvg)') and !Exists('$(LayersIconOut)')">
<MakeDir Directories="$(MSBuildProjectDirectory)\Assets;$(LayersIconTmp)" />
<Exec Command='rsvg-convert --width 16 --height 16 "$(LayersIconSvg)" -o "$(LayersIconTmp)\icon_16.png"' ContinueOnError="true" />
<Exec Command='rsvg-convert --width 24 --height 24 "$(LayersIconSvg)" -o "$(LayersIconTmp)\icon_24.png"' ContinueOnError="true" />
<Exec Command='rsvg-convert --width 32 --height 32 "$(LayersIconSvg)" -o "$(LayersIconTmp)\icon_32.png"' ContinueOnError="true" />
<Exec Command='rsvg-convert --width 48 --height 48 "$(LayersIconSvg)" -o "$(LayersIconTmp)\icon_48.png"' ContinueOnError="true" />
<Exec Command='rsvg-convert --width 64 --height 64 "$(LayersIconSvg)" -o "$(LayersIconTmp)\icon_64.png"' ContinueOnError="true" />
<Exec Command='rsvg-convert --width 128 --height 128 "$(LayersIconSvg)" -o "$(LayersIconTmp)\icon_128.png"' ContinueOnError="true" />
<Exec Command='rsvg-convert --width 256 --height 256 "$(LayersIconSvg)" -o "$(LayersIconTmp)\icon_256.png"' ContinueOnError="true" />
<Exec Command='magick "$(LayersIconTmp)\icon_16.png" "$(LayersIconTmp)\icon_24.png" "$(LayersIconTmp)\icon_32.png" "$(LayersIconTmp)\icon_48.png" "$(LayersIconTmp)\icon_64.png" "$(LayersIconTmp)\icon_128.png" "$(LayersIconTmp)\icon_256.png" "$(LayersIconOut)"'
ContinueOnError="true" />
<RemoveDir Directories="$(LayersIconTmp)" ContinueOnError="true" />
</Target>
</Project>