Modernize WPF UI using MahApps.Metro: switch MainWindow to MetroWindow, add MetroTabControl/MetroTabItem, custom tab styles, and icon-based theme toggle. Move version display to window commands. Integrate MahApps resource dictionaries and ThemeManager for runtime theme switching. Update startup logic for proper theming. WinForms fallback retained.
132 lines
No EOL
6.5 KiB
XML
132 lines
No EOL
6.5 KiB
XML
<Project Sdk="Microsoft.NET.Sdk">
|
|
<PropertyGroup>
|
|
<OutputType>WinExe</OutputType>
|
|
<TargetFramework>net10.0-windows</TargetFramework>
|
|
<Nullable>enable</Nullable>
|
|
<ImplicitUsings>enable</ImplicitUsings>
|
|
<UseWindowsForms>true</UseWindowsForms>
|
|
<UseWPF>true</UseWPF>
|
|
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
|
|
<!-- Default assembly name for regular builds -->
|
|
<AssemblyName>ImageCatalog</AssemblyName>
|
|
<LangVersion>default</LangVersion>
|
|
<ApplicationIcon>Logo.ico</ApplicationIcon>
|
|
</PropertyGroup>
|
|
<PropertyGroup>
|
|
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
|
</PropertyGroup>
|
|
<PropertyGroup>
|
|
<!-- Keep MinVer package enabled but do NOT let it overwrite AssemblyVersion/FileVersion used at build-time.
|
|
This prevents MinVer from injecting a computed version into generated BAML/pack URIs which can cause
|
|
WPF to try loading a mismatched assembly identity at runtime. Do a full clean rebuild after this change. -->
|
|
<UpdateVersionProperties>true</UpdateVersionProperties>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
<DebugType>embedded</DebugType>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
|
|
<DebugType>embedded</DebugType>
|
|
</PropertyGroup>
|
|
<ItemGroup>
|
|
<None Update="Properties\Settings.settings">
|
|
<Generator>SettingsSingleFileGenerator</Generator>
|
|
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
|
</None>
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<Folder Include="Sorgenti\" />
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<ProjectReference Include="..\MaddoShared\MaddoShared.csproj" />
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<PackageReference Include="AIFotoONLUS.Core" Version="0.1.1" />
|
|
<PackageReference Include="AutoMapper" Version="16.0.0" />
|
|
<PackageReference Include="MahApps.Metro" Version="2.4.11" />
|
|
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="10.0.3" />
|
|
<PackageReference Include="Microsoft.Extensions.Logging" Version="10.0.3" />
|
|
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="10.0.3" />
|
|
<PackageReference Include="MahApps.Metro.IconPacks" Version="6.2.1" />
|
|
<PackageReference Include="MinVer" Version="7.0.0" PrivateAssets="all" />
|
|
<PackageReference Include="Microsoft.DotNet.UpgradeAssistant.Extensions.Default.Analyzers" Version="0.4.421302">
|
|
<PrivateAssets>all</PrivateAssets>
|
|
</PackageReference>
|
|
</ItemGroup>
|
|
|
|
<!-- MinVer provides a computed 'Version' property. Do not automatically override AssemblyVersion/FileVersion
|
|
with MinVer's computed Version to avoid mismatches embedded into generated XAML/BAML. The explicit
|
|
AssemblyVersion/FileVersion at the top of this file will be used for runtime identity. -->
|
|
<ItemGroup>
|
|
<Compile Update="Properties\Settings.Designer.cs">
|
|
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
|
<AutoGen>True</AutoGen>
|
|
<DependentUpon>Settings.settings</DependentUpon>
|
|
</Compile>
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<EmbeddedResource Update="MainForm.resx">
|
|
<DependentUpon>MainForm.cs</DependentUpon>
|
|
</EmbeddedResource>
|
|
</ItemGroup>
|
|
<PropertyGroup />
|
|
|
|
<!-- No Visual Studio fallback required for MinVer; MinVer integrates with MSBuild during build. -->
|
|
|
|
<!-- After publish, rename the produced executable to ImageCatalog.<year>.<major>.<minor>.<build>.<revision>.<ext>
|
|
The destination extension is taken from the actual produced file (exe or dll).
|
|
-->
|
|
<Target Name="RenamePublishedExeWithYearAndVersion" AfterTargets="Publish" Condition="'$(PublishDir)' != ''">
|
|
<PropertyGroup>
|
|
<_PublishYear>$([System.DateTime]::Now.ToString("yyyy"))</_PublishYear>
|
|
<!-- Prefer MinVer/MSBuild 'Version', then FileVersion, then AssemblyVersion -->
|
|
<_Ver Condition="'$(Version)' != ''">$(Version)</_Ver>
|
|
<_Ver Condition="'$(Version)' == ''">$(FileVersion)</_Ver>
|
|
<_Ver Condition="'$(_Ver)' == ''">$(AssemblyVersion)</_Ver>
|
|
|
|
<!-- Normalize to avoid spaces but keep plus signs for pre-release build metadata; replace spaces with underscore -->
|
|
<_VerSanitized>$([System.String]::Copy('$(_Ver)'))</_VerSanitized>
|
|
<_VerSanitized>$([System.String]::Copy('$(_VerSanitized)').Replace(' ', '_'))</_VerSanitized>
|
|
|
|
<_NewExeNameBase>ImageCatalog.$(_PublishYear).$(_VerSanitized)</_NewExeNameBase>
|
|
</PropertyGroup>
|
|
|
|
<Message Text="Attempting to find published assembly to rename to $(_NewExeNameBase).* in $(PublishDir)" Importance="High" />
|
|
|
|
<!-- Candidate locations in order of likelihood -->
|
|
<PropertyGroup>
|
|
<_Candidate1>$(PublishDir)$(TargetFileName)</_Candidate1>
|
|
<_Candidate2>$(PublishDir)$(TargetName)$(TargetExt)</_Candidate2>
|
|
<_Candidate3>$(PublishDir)$(TargetName).exe</_Candidate3>
|
|
<_Candidate4>$(PublishDir)$(AssemblyName)$(TargetExt)</_Candidate4>
|
|
<_Candidate5>$(PublishDir)$(AssemblyName).exe</_Candidate5>
|
|
</PropertyGroup>
|
|
|
|
<!-- Pick the first existing candidate and compute destination using its extension -->
|
|
<PropertyGroup Condition="Exists('$(_Candidate1)') and '$(_CandidateFound)' == ''">
|
|
<_CandidateFound>$(_Candidate1)</_CandidateFound>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="Exists('$(_Candidate2)') and '$(_CandidateFound)' == ''">
|
|
<_CandidateFound>$(_Candidate2)</_CandidateFound>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="Exists('$(_Candidate3)') and '$(_CandidateFound)' == ''">
|
|
<_CandidateFound>$(_Candidate3)</_CandidateFound>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="Exists('$(_Candidate4)') and '$(_CandidateFound)' == ''">
|
|
<_CandidateFound>$(_Candidate4)</_CandidateFound>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="Exists('$(_Candidate5)') and '$(_CandidateFound)' == ''">
|
|
<_CandidateFound>$(_Candidate5)</_CandidateFound>
|
|
</PropertyGroup>
|
|
|
|
<!-- If a candidate was found, compute destination using its extension and perform copy/delete -->
|
|
<PropertyGroup Condition="'$(_CandidateFound)' != ''">
|
|
<_FoundExt>$([System.IO.Path]::GetExtension('$(_CandidateFound)'))</_FoundExt>
|
|
<_DestExe>$(PublishDir)$(_NewExeNameBase)$(_FoundExt)</_DestExe>
|
|
</PropertyGroup>
|
|
|
|
<Message Text="Found candidate: $(_CandidateFound). Renaming to $(_DestExe)" Importance="High" Condition="'$(_CandidateFound)' != ''" />
|
|
|
|
<Copy SourceFiles="$(_CandidateFound)" DestinationFiles="$(_DestExe)" SkipUnchangedFiles="false" Condition="'$(_CandidateFound)' != ''" />
|
|
<Delete Files="$(_CandidateFound)" Condition="'$(_CandidateFound)' != ''" />
|
|
</Target>
|
|
</Project> |