2024-10-14 18:54:30 +02:00
<Project Sdk= "Microsoft.NET.Sdk" >
2024-10-14 21:27:12 +02:00
<PropertyGroup >
<Nullable > enable</Nullable>
<ImplicitUsings > enable</ImplicitUsings>
<ProduceReferenceAssembly > False</ProduceReferenceAssembly>
2026-02-14 22:18:56 +01:00
<!-- Default assembly name for regular builds -->
<AssemblyName > ImageCatalog</AssemblyName>
2025-07-23 15:08:25 +02:00
<LangVersion > default</LangVersion>
2026-03-16 22:14:49 +01:00
<AvaloniaWindowsCrossPublish Condition= "'$(AvaloniaWindowsCrossPublish)' == ''" > false</AvaloniaWindowsCrossPublish>
2026-05-09 17:27:05 +02:00
<UseLocalAIFotoONLUS Condition= "'$(UseLocalAIFotoONLUS)' == '' and Exists('..\..\AIFotoONLUS\src\AIFotoONLUS.Core\AIFotoONLUS.Core.csproj') and '$(GITHUB_ACTIONS)' != 'true' and '$(CI)' != 'true'" > true</UseLocalAIFotoONLUS>
<UseLocalAIFotoONLUS Condition= "'$(UseLocalAIFotoONLUS)' == ''" > false</UseLocalAIFotoONLUS>
2024-10-14 21:56:40 +02:00
</PropertyGroup>
2026-02-26 19:17:23 +01:00
<!-- Windows: net10.0 - windows TFM auto - defines WINDOWS preprocessor symbol -->
<PropertyGroup Condition= "$([MSBuild]::IsOsPlatform('Windows'))" >
<TargetFramework > net10.0-windows</TargetFramework>
<OutputType > WinExe</OutputType>
2025-07-23 15:24:36 +02:00
<RuntimeIdentifier > win-x64</RuntimeIdentifier>
2026-02-26 19:17:23 +01:00
<ApplicationIcon > Logo.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup Condition= "!$([MSBuild]::IsOsPlatform('Windows'))" >
<TargetFramework > net10.0</TargetFramework>
<OutputType > Exe</OutputType>
2025-07-23 15:24:36 +02:00
</PropertyGroup>
2026-03-16 22:14:49 +01:00
<PropertyGroup Condition= "'$(AvaloniaWindowsCrossPublish)' == 'true'" >
<OutputType > WinExe</OutputType>
<RuntimeIdentifier Condition= "'$(RuntimeIdentifier)' == ''" > win-x64</RuntimeIdentifier>
<UseAppHost > true</UseAppHost>
<SelfContained Condition= "'$(SelfContained)' == ''" > true</SelfContained>
<PublishSingleFile Condition= "'$(PublishSingleFile)' == ''" > true</PublishSingleFile>
<PublishTrimmed Condition= "'$(PublishTrimmed)' == ''" > false</PublishTrimmed>
<PublishReadyToRun Condition= "'$(PublishReadyToRun)' == ''" > false</PublishReadyToRun>
</PropertyGroup>
2024-10-14 21:56:40 +02:00
<PropertyGroup >
2026-05-09 14:04:21 +02:00
<!-- Keep MinVer package enabled but do NOT let it overwrite AssemblyVersion/FileVersion used at build - time. -->
2024-10-14 21:56:40 +02:00
<UpdateVersionProperties > true</UpdateVersionProperties>
2026-03-12 18:48:13 +01:00
<!-- Skip MinVer execution during local builds to avoid environment/runtime - specific failures. -->
<MinVerSkip > true</MinVerSkip>
2024-10-14 21:27:12 +02:00
</PropertyGroup>
2026-05-09 18:37:31 +02:00
<PropertyGroup Condition= "$([MSBuild]::IsOsPlatform('Windows')) and '$(UseLocalAIFotoONLUS)' == 'true'" >
<LocalAIFotoOutputDir > $([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)..\..\AIFotoONLUS\src\AIFotoONLUS.Core\bin\$(Configuration)\net10.0'))</LocalAIFotoOutputDir>
</PropertyGroup>
2021-03-04 10:44:09 +01:00
<PropertyGroup Condition= " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " >
2024-10-14 21:27:12 +02:00
<DebugType > embedded</DebugType>
</PropertyGroup>
<PropertyGroup Condition= "'$(Configuration)|$(Platform)'=='Release|AnyCPU'" >
<DebugType > embedded</DebugType>
2021-03-04 17:26:08 +01:00
</PropertyGroup>
2026-02-26 21:19:03 +01:00
<ItemGroup >
<AvaloniaXaml Remove= "Sorgenti\**" />
<Compile Remove= "Sorgenti\**" />
<EmbeddedResource Remove= "Sorgenti\**" />
<None Remove= "Sorgenti\**" />
<Page Remove= "Sorgenti\**" />
</ItemGroup>
2021-03-04 10:44:09 +01:00
<ItemGroup >
2024-10-14 19:54:29 +02:00
<None Update= "Properties\Settings.settings" >
<Generator > SettingsSingleFileGenerator</Generator>
<LastGenOutput > Settings.Designer.cs</LastGenOutput>
</None>
2021-03-04 10:44:09 +01:00
</ItemGroup>
<ItemGroup >
2026-02-28 15:30:57 +01:00
<ProjectReference Include= "..\Catalog.Communication\Catalog.Communication.csproj" />
2024-10-14 18:54:30 +02:00
<ProjectReference Include= "..\MaddoShared\MaddoShared.csproj" />
2026-05-09 17:27:05 +02:00
<ProjectReference Include= "..\..\AIFotoONLUS\src\AIFotoONLUS.Core\AIFotoONLUS.Core.csproj" Condition= "'$(UseLocalAIFotoONLUS)' == 'true'" />
2021-03-04 10:44:09 +01:00
</ItemGroup>
2024-10-14 18:54:30 +02:00
<ItemGroup >
2026-05-09 17:27:05 +02:00
<PackageReference Include= "AIFotoONLUS.Core" Version= "0.1.2" Condition= "'$(UseLocalAIFotoONLUS)' != 'true'" />
2026-03-08 12:09:58 +01:00
<PackageReference Include= "AutoMapper" Version= "16.1.0" />
<PackageReference Include= "IconPacks.Avalonia" Version= "1.3.1" />
2026-03-14 09:44:21 +01:00
<PackageReference Include= "Microsoft.Extensions.DependencyInjection" Version= "10.0.5" />
<PackageReference Include= "Microsoft.Extensions.Logging" Version= "10.0.5" />
<PackageReference Include= "Microsoft.Extensions.Logging.Console" Version= "10.0.5" />
2026-02-17 20:51:35 +01:00
<PackageReference Include= "MinVer" Version= "7.0.0" PrivateAssets= "all" />
2026-03-08 12:09:58 +01:00
<PackageReference Include= "Avalonia" Version= "11.3.12" />
<PackageReference Include= "Avalonia.Desktop" Version= "11.3.12" />
<PackageReference Include= "Avalonia.Themes.Fluent" Version= "11.3.12" />
<PackageReference Include= "Avalonia.Controls.DataGrid" Version= "11.3.12" />
2024-10-14 19:54:29 +02:00
<PackageReference Include= "Microsoft.DotNet.UpgradeAssistant.Extensions.Default.Analyzers" Version= "0.4.421302" >
2024-10-14 18:54:30 +02:00
<PrivateAssets > all</PrivateAssets>
</PackageReference>
</ItemGroup>
2026-02-15 00:03:16 +01:00
2026-02-17 20:51:35 +01:00
<!-- MinVer provides a computed 'Version' property. Do not automatically override AssemblyVersion/FileVersion
2026-05-09 14:04:21 +02:00
with MinVer's computed Version. The explicit AssemblyVersion/FileVersion at the top of this file will be used for runtime identity. -->
2024-10-14 19:54:29 +02:00
<ItemGroup >
<Compile Update= "Properties\Settings.Designer.cs" >
<DesignTimeSharedInput > True</DesignTimeSharedInput>
<AutoGen > True</AutoGen>
<DependentUpon > Settings.settings</DependentUpon>
</Compile>
</ItemGroup>
2024-10-14 18:54:30 +02:00
<PropertyGroup />
2026-02-14 22:18:56 +01:00
2026-02-16 21:49:46 +01:00
<!-- No Visual Studio fallback required for MinVer; MinVer integrates with MSBuild during build. -->
2026-02-15 00:03:16 +01:00
2026-02-14 22:18:56 +01:00
<!-- 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>
2026-02-16 21:49:46 +01:00
<!-- Prefer MinVer/MSBuild 'Version', then FileVersion, then AssemblyVersion -->
<_Ver Condition= "'$(Version)' != ''" > $(Version)</_Ver>
<_Ver Condition= "'$(Version)' == ''" > $(FileVersion)</_Ver>
2026-02-14 22:18:56 +01:00
<_Ver Condition= "'$(_Ver)' == ''" > $(AssemblyVersion)</_Ver>
2026-02-15 00:03:16 +01:00
<!-- Normalize to avoid spaces but keep plus signs for pre - release build metadata; replace spaces with underscore -->
2026-02-14 22:18:56 +01:00
<_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>
2026-05-09 18:37:31 +02:00
<Target Name= "CopyLocalCudaInferenceLibraries" AfterTargets= "Build" Condition= "$([MSBuild]::IsOsPlatform('Windows')) and '$(UseLocalAIFotoONLUS)' == 'true'" >
<ItemGroup >
<LocalCudaInferenceLibrary Include= "$(LocalAIFotoOutputDir)\cublasLt64_11.dll" Condition= "Exists('$(LocalAIFotoOutputDir)\cublasLt64_11.dll')" />
<LocalCudaInferenceLibrary Include= "$(LocalAIFotoOutputDir)\cudnn_cnn_infer64_8.dll" Condition= "Exists('$(LocalAIFotoOutputDir)\cudnn_cnn_infer64_8.dll')" />
</ItemGroup>
<Copy SourceFiles= "@(LocalCudaInferenceLibrary)" DestinationFolder= "$(TargetDir)" SkipUnchangedFiles= "true" Condition= "'@(LocalCudaInferenceLibrary)' != ''" />
</Target>
2021-03-04 10:44:09 +01:00
</Project>