Camaradas:
Gostava de colocar à discussão este tema.
Num projecto em que tenho trabalhado, até ao momento, optamos (por simplificação) por definir as versões das nossas assemblies estaticamente 1.0.0.0.0. Se me recordo correctamente, o VS 2005 sugere isto por defeito por oposição às versões anteriores que sugeriam um versionamento do tipo 1.0.*.*.
A questão que se coloca agora é que temos tido algumas dificuldades porque na realidade acabamos por ter várias builds diferentes em que as assemblies têm versões iguais.
Analisando esta questão, surgem-me várias dúvidas sobre as quais gostaria de ouvir as vossas opiniões/experiências:
- Assumindo um esquema incremental de versionamento, o que preferem? Versões incrementais (tipo 1.0.0.1, 1.0.0.2, etc.) ou versões baseadas na data da build (1.0.70101.1, 1.0.70101.2, 1.0.70102.1, etc.)?
- Como tratar esta questão no processo de builds do TSF (msbuild)?
- Automatizando o versionamento nas builds, como tratar a questão do source control?
- E as dependências entre projectos (quer a nível de referências como a nível de ficheiros de configuração que referem assemblies directamente com o número da versão)? Isto vai ligar de certo com um esquema de binding redirect mais ou menos complexo.
Um dos aspectos cruciais é que a equipa de desenvolvimento não deveria ter nenhuma intervenção no processo (daí a automatização no processo de build) mas também não deve ter que pagar nenhum custo por este processo existir (exemplo: ter cuidados adicionais para ir buscar as versões correctas de determinados projectos ou ficheiros).
Pessoalmente, pensei até agora que poderiamos viver bem com uma versão estática. E também não fui capaz de encontrar documentação de referência sobre este assunto que vá para além de explicar o versionamento do .NET ou custom tasks para o msbuild (que só resolvem parte do problema).
Será que estou a ver esta questão da maneira errada ou deveria existir já trabalho de referência público sobre esta matéria?
Agradeço os vossos comentários.
---
Hugo Ribeiro