Controllo delle versioni di un'app Web ASP.NET
-
22-07-2019 - |
Domanda
Non sono nemmeno sicuro che il versioning sia la parola giusta per farlo, ma dovrà farlo. Voglio iniziare a mettere una nota 'Versione x.x.xx' sulle nostre app interne su richiesta dei nostri utenti, quindi hanno un'idea approssimativa di quando viene aggiornato (e in futuro, rendilo un link che mostra le modifiche). Sembra che usare il file AssemblyInfo.cs sia una buona idea: ti consente di aggiornare automaticamente la build + revisione che è buona (per il .DLL dell'applicazione web).
È un approccio decente? Quindi ogni volta che raggiungo i traguardi della versione principale / secondaria per la mia app. Posso semplicemente aggiornarli manualmente, giusto? Tutto questo presuppone che io possa effettivamente ottenere le informazioni sulla versione dalla mia app. in qualche modo, che non ho idea di come fare.
Soluzione
Facciamo la stessa cosa nella nostra applicazione. Sebbene sia possibile aggiungere manualmente il numero di versione, le nostre informazioni sulla versione vengono aggiunte all'assemblaggio come parte del nostro processo di compilazione automatizzato (utilizziamo un servizio TFS 2008 personalizzato), che consiglio vivamente. Ecco il controllo che usiamo (lo abbiamo appena messo in fondo alla pagina principale):
public class BuildVersion : WebControl
{
/// <summary>
/// Render override
/// </summary>
/// <param name="writer"></param>
protected override void Render(HtmlTextWriter writer)
{
writer.Write("<!--");
writer.Write("Version: ");
writer.Write(GetAssemblyVersion());
writer.Write("-->");
}
private string GetAssemblyVersion()
{
try
{
Object[] atts = Assembly.GetAssembly(this.GetType()).GetCustomAttributes(true);
foreach (Object o in atts)
{
if (o.GetType() == typeof(AssemblyVersionAttribute))
{
return ((AssemblyVersionAttribute)o).Version;
}
}
return String.Empty;
}
catch
{
return "Failed to load assembly";
}
}
}
Altri suggerimenti
Puoi usare i numeri di versione nel modo che descrivi, cambiando semplicemente i numeri nel file AssemblyInfo mentre costruisci nuove versioni, ma è meglio se collegato a un sistema di controllo del codice sorgente. Utilizziamo i progetti CrusieControl.NET e Web Deployment per impostare il numero di versione, ma sono sicuro che altri avranno altri suggerimenti.
Inoltre è possibile ottenere il numero di versione da un sito Web compilato utilizzando questo codice:
System.Reflection.Assembly.GetExecutingAssembly.GetName.Version.ToString
Se la tua esecuzione in modalità Debug prima della compilazione mostrerà 0.0.0.0 ma puoi verificarlo e visualizzare " Sviluppo " o alcuni di questi per mostrarti che sta funzionando localmente (non che non lo sapresti, ma se mai vedi 0.0.0.0 sai che qualcosa non va.
Spero che aiuti
Non è una cattiva idea. La soluzione per ottenere la versione DLL di ASP.NET Web App è semplice:
VB.NET
My.Application.Info.Version (VB.NET)
C #
Ottieni l'accesso al mio spazio dei nomi come mostrato qui http: //www.codeproject. com / KB / cs / MyNamespace.aspx
Molto più facile che usare tonnellate di codice.
Automatizziamo il versioning con subversion, ccnet e nant.
Il nostro script analizza il percorso della cartella (/Branches/1.4.5/Source ...) ed estrae il numero di versione (1.4.5). Successivamente recuperiamo il numero di revisione corrente dalla sovversione e lo posizioniamo nell'ultima posizione della versione (ovvero 1.4.5.346). Una volta ottenuto il numero di versione completo, lo inseriamo in tutti gli assembly e lo scriviamo in un file version.txt in modo da determinare facilmente quale versione è attualmente distribuita sui server Web.
Dato un Assembly a, usa un .GetName (). Version.ToString () per ottenere la versione nel codice.
GetName restituisce un AssemblyName .
La versione restituisce la versione come specificato nel file AssemblyInfo.