Pergunta

No .NET existem dois números de versão disponíveis ao construir um projeto, Versão do Arquivo e Versão do Assembly.Como você está usando esses números?Mantê-los iguais?Incrementando automaticamente um, mas alterando manualmente o outro?

Também e quanto ao AssemblyInformationalVersion atributo?

Encontrei este artigo de suporte da Base de Conhecimento da Microsoft (KB) que forneceu alguma ajuda: Como usar a versão Assembly e a versão do arquivo Assembly.

Foi útil?

Solução

Em um cenário em que tenho vários assemblies de arquivos (ou seja,1 exe e 5 dlls) Usarei uma versão de arquivo diferente para cada um, mas a mesma versão assembly para todos eles, permitindo que você saiba com qual exe cada uma das dlls vai.

Outras dicas

Em soluções com vários projetos, uma coisa que achei muito útil é fazer com que todos os arquivos AssemblyInfo apontem para um único projeto que rege o controle de versão.Então meu AssemblyInfos tem uma linha:

[assembly: AssemblyVersion(Foo.StaticVersion.Bar)]

Tenho um projeto com um único arquivo que declara a string:

namespace Foo
{
    public static class StaticVersion
    {
         public const string Bar= "3.0.216.0"; // 08/01/2008 17:28:35
    }
}

Meu processo de construção automatizado apenas altera essa string puxando a versão mais recente do banco de dados e incrementando o penúltimo número.

Eu só altero o número da compilação principal quando o conjunto de recursos muda drasticamente.

Eu não mudo a versão do arquivo.

O artigo da base de conhecimento menciona a distinção mais importante:As versões dos arquivos são usadas apenas para fins de exibição, enquanto a versão assembly desempenha um papel importante no comportamento de carregamento do .NET.

Se você alterar o número da versão do assembly, a identidade do seu assembly como um todo será alterada.Os desenvolvedores precisarão reconstruir para fazer referência à sua nova versão (a menos que você implemente alguma "política" de controle de versão automática) e em tempo de execução apenas os assemblies com números de versão correspondentes serão carregados.

Isso é importante no meu ambiente, onde precisamos de um número de versão incremental e altamente visível para fins de auditoria, mas não queremos forçar os desenvolvedores a reconstruir ou ter muitas versões simultaneamente em produção.Neste caso, para pequenas alterações compatíveis com versões anteriores, atualizamos a versão do arquivo, mas não a versão do assembly.

As versões dos arquivos são usadas apenas para fins de exibição, enquanto a versão assembly desempenha um papel importante no comportamento de carregamento do .NET.

Não exatamente.A versão do arquivo também é importante para o Windows Installer quando você atualiza uma versão existente em relação a uma versão anterior.

Com meu aplicativo atual, cada projeto VS possui um link para um arquivo de origem "AssemblyBuildInfo" que possui os seguintes atributos:

[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyCompany("Acme Corporationy")]
[assembly: AssemblyCopyright("Copyright ©  2009 Acme Corporation")]

Dessa forma, todos os assemblies da minha solução compartilham a mesma versão e informações da empresa (ou seja, se eu tiver que alterá-los, altero apenas uma vez).Ao excluir FileVersion, ele é automaticamente definido como AssemblyVersion.

@Adão:Você está alterando a versão do arquivo a cada compilação?Você está usando controle de versão (SYN ou VSS) e essas informações para vincular a fonte aos binários?

Parece fazer sentido que a versão Assembly permaneça a mesma.ou seja"2.0.0.0".Isso corresponde à implantação do produto.

A versão do arquivo é alterada para corresponder à revisão do controle de origem."2.0.??.revision" Isso forneceria um link de uma dll (ou exe) específica para a fonte que a construiu.

Escrevi uma postagem no blog sobre esse tópico que pode ser útil para a comunidade http://blog.raffaeu.com/archive/2011/12/11/sharing-assembly-version-in-visual-studio-2010.aspx

Eu os mantenho iguais.Mas não tenho assemblies com vários arquivos, e é aí que o número AssemblyVersion se torna importante.Eu uso codificação de data no estilo Microsoft para meus números de compilação, em vez de incremento automático (não acho que o número de vezes que algo foi criado seja tão importante).

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