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>
45 lines
1.8 KiB
C#
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><Version></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;
|
|
}
|
|
}
|
|
}
|