.Net Assembly versioning

Estou enviando vários deploys de um sistema para produção.  Quem realmente deve colocar no ar é o pessoal encarregado do servidor. Como me assegurar que a aplicação mais atual já está no ar?

Podemos utilizar a versão do assembly do projeto para isto. Existe um atributo em .Net que marca a versão de sua aplicação. Este atributo é o AssemblyVersion.

Por default ele é marcado da seguinte maneira, no arquivo AssemblyInfo.cs:

[assembly:AssemblyVersion("1.0.*")]

A versão sempre segue o seguinte padrão:

...

O que o asterisco faz é incrementar automaticamente o build number e revision. E, embora não esteja explícito na página da MSDN, no CodeProject tem a informação de que o build number gerado é o número de dias desde 1° de fevereiro janeiro de 2000, e o *revision *o número de segundos desde a meia noite divido por dois.

Daí é só utilizar o seguinte método:

public static string GetSystemVersion(HttpServerUtility server) { string projectName = "NameOfYourProjectThatNamesYourDLL"; Assembly assembly = Assembly.Load(projectName); return assembly.GetName().Version.ToString(); }

Coloque o valor gerado pelo método em algum lugar do sistema que você tenha acesso. Para calcular a data exata de build do assembly use este site: http://www.timeanddate.com/date/timeadd.html

PS: Este é o post 666. Creepy…..