Spesso mi capita, specie nelle applicazioni Web, di voler sapere con precisione quale versione dell'applicazione sto utilizzando.
Questo sia per accertarmi che sul server ci sia proprio l'ultima, che per verificare quale sia la versione che presenta determinati problemi.
Per ottenere ciò si deve fare riferimento al Reflection perchè recuperi questa informazione dall'Assembly in esecuzione.
Quasi sempre dimentico quali sono esattamente le istruzioni da usare per ottenere questa informazione, e quasi mai le trovo "al volo" sulla rete.
Pertanto il mio piccolo contributo.
Per prima cosa dobbiamo usare il namespace System.Reflection, poi sarà sufficiente far riferimento ad Assembly per recuperare quello in esecuzione (GetExecutingAssembly()) e da questo ottenere le informazioni di versione (GetName().Version).
Version è una classe derivata da System che contiene chiaramente i dati di versione, nella forma ordinata Version.Major, Version.Minor, Version.Build e Version.Revision. Quello che vogliamo ottenere è una stringa che si presenti come di seguito: "vMAYOR.minor.build", cioè nella forma "v1.0.0001".
In pratica:
...
using System.Reflection;
...
public class infoPage : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e) {
string[] av = _AppVersion();
string verMajMinOnly=string.Concat("v",av[0],".",av[1]);
string verComplete=string.Concat(verMajMinOnly,".",av[2]);
}
private string[] _AppVersion(){
Version appVer = Assembly.GetExecutingAssembly().GetName().Version;
return new string[] {appVer.Major.ToString(),
appVer.Minor.ToString(),
appVer.Build.ToString(),
appVer.Revision.ToString()};
}
}
Avremo così due possibilità, visualizzare la versione completa (verComplete = "v1.0.0001") o la stringa con solo la mayor e la minor version (verMajMinOnly = "v1.0").