Pergunta

Estou ansioso para implementar uma construção diária para um próximo projeto.

Mas antes de fazer isso, preciso saber como fazer uma versão corretamente uma montagem.

Eu tenho as seguintes preocupações:

  • Cada montagem deve ter um número de versão independente ou todos devem compartilhar a mesma versão?
  • Devo usar uma versão * para construção e revisão?
  • A revisão é relevante para a construção diária?
Foi útil?

Solução

Carimbamos todos os conjuntos de nossos produtos com o mesmo número de versão usando as seguintes etapas:

  • Vincular todos os assemblies a um AssemblyInfocommon.cs contendo o número da versão Informações: Consulte aquiPor exemplo.

  • Gere o arquivo AssemblyInfocommon.cs como parte da construção usando (em nosso caso) a tarefa Nant AsMinfo, Cruise Control .NET e o SVN Reviation Labeller

No nosso caso, não usamos a versão *. Todas as versões implantadas são criadas no servidor de construção. Não nos preocupamos com o número da versão em nossos desktops.

Outras dicas

A resposta realmente depende do que você está tentando realizar com os números da versão da montagem. Se você estiver fazendo uma implantação do ClickOnce e deseja fazer downloads independentes de montagens atualizadas, precisará de cada assembly de forma independente em versão - caso contrário, acho que é bom ter versões de montagem correspondem ao número de liberação do software. Em cenários mais complexos, você pode precisar de outra estratégia.

Um esquema que eu usei em uma empresa anterior era major.Minor.Revision.Build - Portanto, na versão 1.0 do produto, a versão de montagem e a versão do arquivo de montagem em cada montagem foi 1.0.1129 (por exemplo). Isso facilitou a correspondência de quais montagens faziam parte de qual liberação de software, até o número de compilação. Conseguimos isso usando uma pesquisa de pré-compilação e substituição em cada arquivo de AssemblyInfo.cs para substituir um token pelos números de versão fornecidos pelo nosso processo de compilação automatizada.

Portanto, cada montagem deve ter a mesma versão que normalmente é uma combinação da versão de liberação IE 3.4 + o número de construção, que é uma sequência que representa o número de vezes que a liberação foi compilada no servidor de compilação. A revisão é relevante porque demonstra o número de compilações que você criou para essa versão. Você pode realmente fazer isso de duas maneiras. A primeira maneira seria que, se você planejasse uma versão do IE 3.4, quando começar a trabalhar nessa versão, esse é o número principal da versão e o número de versão menor incrementos com a compilação. Outra maneira de fazer isso é controlar firmemente as versões de construção, pois, quando você estiver pronto para executar seu lançamento no controle de qualidade / regressão, você define sua versão principal para 3.4 e deixa seu número de versão menor para 0. Você mantém as coisas com força controlada dessa maneira até você soltar. Dessa forma, você pode controlar seu pacote de serviço numerando o número da versão menor. Espero que isto ajude.

Normalmente, concordo que todos os assemblies deveriam ter o mesmo número de versão; No entanto, eu faria uma ressalva a isso. Se um dos assemblies for usado em outro lugar fora deste projeto ou se for considerado seu próprio projeto, ele deve ter seu próprio número de versão. Provavelmente também deve ser retirado dessa solução e para o seu. A única razão pela qual menciono isso é que vi inúmeras ocasiões em que as pessoas têm uma montagem usada em alguns outros lugares, mas principalmente em um só lugar e tentam manter a versão reta. É uma má ideia fazer isso. Eu acho que o princípio de responsabilidade única também se aplica ao nível da solução/projeto.

No que diz respeito à numeração, concordo com Guy Starbuck (major.minor.revision.build). Foi assim que eu sempre fiz isso e sempre funcionou bem.

Temos um aplicativo grande (centenas de montagens) com lançamentos frequentes (cerca de 1 por mês). Fomos para o "Dê a cada assembléia a mesma versão", mas é uma fonte constante de fustração para mim que as montagens de 1 versão são completamente incompatíveis com as de outra, apesar do fato de que as interfaces desses assmblies raramente (se é alguma) mudam.

Se esse é o caso de você, você poderá se beneficiar de assemblies de versões separadamente - cada vez que atualiza sua montagem, apenas se preocupa em incrementar o número da versão nos casos em que você realmente deseja quebrar a ligação da montagem (por exemplo, se a interface mudar ou as alterações forem caso contrário, você deseja impedir que alguém use acidentalmente a versão anterior).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top