Files
Mimante/Mimante/Utilities/AppInfo.cs
T
Alby96andClaude Opus 5 8954f9aaba Correggi i commenti che indicavano ancora il .csproj come fonte della versione
AppInfo e il .csproj dicevano entrambi di alzare <Version> per pubblicare. Da
quando la versione viene dal tag non e' piu' vero, ed e' il tipo di commento che
fa perdere tempo fra sei mesi: adesso dicono a cosa serve davvero quel numero
(le compilazioni di sviluppo) e dove sta la fonte dei rilasci.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 22:41:55 +02:00

45 lines
1.8 KiB
C#

using System.Reflection;
namespace AutoBidder.Utilities
{
/// <summary>
/// Informazioni sull'applicazione, in un solo posto.
///
/// <para>La versione si legge dall'assembly, così il titolo della finestra e il log
/// d'avvio restano allineati da soli invece di rincorrere il numero in più stringhe
/// sparse.</para>
///
/// <para>Nei pacchetti pubblicati quel numero viene dal tag git, scritto
/// nell'assembly da <c>build/Release.proj</c> al momento della pubblicazione. Il
/// <c>&lt;Version&gt;</c> del <c>.csproj</c> vale solo per le compilazioni di
/// sviluppo: alzarlo non pubblica niente, e non serve prima di un rilascio.</para>
/// </summary>
public static class AppInfo
{
/// <summary>Nome mostrato all'utente, senza numero di versione.</summary>
public const string Name = "AutoBidder";
/// <summary>Versione leggibile (es. "4.1.0"), senza metadati di build.</summary>
public static string Version { get; } = ReadVersion();
/// <summary>Titolo completo per la finestra: "AutoBidder 4.1.0".</summary>
public static string Title => $"{Name} {Version}";
private static string ReadVersion()
{
var assembly = Assembly.GetExecutingAssembly();
var informational = assembly
.GetCustomAttribute<AssemblyInformationalVersionAttribute>()?.InformationalVersion;
var raw = string.IsNullOrWhiteSpace(informational)
? assembly.GetName().Version?.ToString() ?? "0.0"
: informational;
// Rimuove i metadati di build che il compilatore aggiunge (es. "4.1.0+abc123").
var plus = raw.IndexOf('+');
return plus >= 0 ? raw.Substring(0, plus) : raw;
}
}
}