- Add .gitlab-ci.yml for Windows CI/CD: build, publish, and GitLab Release with artifact upload - Replace GitVersion.MsBuild with MinVer for versioning; update all versioning logic in .csproj - Remove GitVersion CLI fallback for Visual Studio builds - Update post-publish renaming to use MinVer's Version property - Replace multiple thumbnail text checkboxes with a single ComboBox selector in MainWindow.xaml - Change default UI startup: prefer WPF MainWindow, fallback to WinForms MainForm
136 lines
No EOL
6.5 KiB
XML
136 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>
|
|
<AssemblyVersion>3.1.2.0</AssemblyVersion>
|
|
<FileVersion>3.1.2.0</FileVersion>
|
|
<InformationalVersion>3.1.2</InformationalVersion>
|
|
<Version>3.1.2</Version>
|
|
<!-- Default assembly name for regular builds -->
|
|
<AssemblyName>ImageCatalog</AssemblyName>
|
|
<LangVersion>default</LangVersion>
|
|
<ApplicationIcon>Logo.ico</ApplicationIcon>
|
|
</PropertyGroup>
|
|
<PropertyGroup>
|
|
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
|
</PropertyGroup>
|
|
<PropertyGroup>
|
|
<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="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="MinVer" Version="3.0.0" PrivateAssets="all" />
|
|
<PackageReference Include="Microsoft.DotNet.UpgradeAssistant.Extensions.Default.Analyzers" Version="0.4.421302">
|
|
<PrivateAssets>all</PrivateAssets>
|
|
</PackageReference>
|
|
</ItemGroup>
|
|
|
|
<!-- If MinVer ran and produced values, prefer them for assembly/file/informational version
|
|
so the built assembly exposes the computed version for runtime and the publish rename uses the same value. -->
|
|
<PropertyGroup>
|
|
<!-- Prefer explicit MSBuild 'Version' set by MinVer when available -->
|
|
<AssemblyVersion Condition="'$(Version)' != ''">$(Version)</AssemblyVersion>
|
|
<FileVersion Condition="'$(Version)' != ''">$(Version)</FileVersion>
|
|
<InformationalVersion Condition="'$(Version)' != ''">$(Version)</InformationalVersion>
|
|
</PropertyGroup>
|
|
<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> |