53 lines
3.5 KiB
XML
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>
|