Gostaria que a propriedade de versão do meu aplicativo fosse incrementada para cada compilação, mas não tenho certeza de como habilitar essa funcionalidade no Visual Studio (2005/2008). Tentei especificar AssemblyVersion como 1.0. * Mas não me deu exatamente o que desejo.
Também estou usando um arquivo de configurações e, em tentativas anteriores, quando a versão do assembly mudou, minhas configurações foram redefinidas para o padrão, pois o aplicativo procurou o arquivo de configurações em outro diretório.
Gostaria de poder exibir um número de versão na forma de 1.1.38 para que, quando um usuário encontrar um problema, eu possa registrar a versão que ele está usando e também informá-lo para atualizar se tiver uma versão antiga.
Uma breve explicação de como funciona o controle de versão também seria apreciada. Quando o número de construção e revisão é incrementado?
fonte
Respostas:
Com o material "Integrado", você não pode, pois usar 1.0. * Ou 1.0.0. * Substituirá os números da revisão e da compilação por uma data / carimbo de data / hora codificados, o que normalmente também é uma boa maneira.
Para obter mais informações, consulte a documentação do Assembly Linker na tag / v.
Para incrementar automaticamente os números, use a Tarefa AssemblyInfo:
Tarefa AssemblyInfo
Isso pode ser configurado para incrementar automaticamente o número do build.
Existem 2 pegadinhas:
Recuperar o número da versão é muito fácil:
E, para esclarecer: Em .net ou pelo menos em C #, a compilação é na verdade o TERCEIRO número, não o quarto como algumas pessoas (por exemplo, os desenvolvedores Delphi que estão acostumados com Major.Minor.Release.Build) podem esperar.
Em .net, é Major.Minor.Build.Revision.
fonte
O VS.NET padroniza a versão do Assembly para 1.0. * E usa a seguinte lógica ao auto-incrementar: ele define a parte de construção para o número de dias desde 1º de janeiro de 2000 e define a parte de revisão para o número de segundos desde a meia-noite, hora local, dividida por dois. Consulte este artigo do MSDN .
A versão do assembly está localizada em um arquivo assemblyinfo.vb ou assemblyinfo.cs. Do arquivo:
fonte
January 1st, 2000
Descobri que funciona bem simplesmente exibir a data da última compilação usando o seguinte sempre que uma versão do produto for necessária:
Em vez de tentar obter a versão de algo como o seguinte:
fonte
Qual sistema de controle de origem você está usando?
Quase todos eles têm alguma forma de tag $ Id $ que é expandida quando o arquivo é verificado.
Eu geralmente uso alguma forma de hackery para exibir isso como o número da versão.
A outra alternativa é usar a data como o número da compilação: 080803-1448
fonte
[Visual Studio 2017, propriedades .csproj ]
Para atualizar automaticamente sua propriedade PackageVersion / Version / AssemblyVersion (ou qualquer outra propriedade), primeiro, crie uma nova
Microsoft.Build.Utilities.Task
classe que obterá seu número de compilação atual e enviará de volta o número atualizado (recomendo criar um projeto separado apenas para essa classe).Eu atualizo manualmente os números major.minor, mas deixo o MSBuild atualizar automaticamente o número da compilação (1.1. 1 , 1.1. 2 , 1.1. 3 , etc. :)
Em seguida, chame sua tarefa recém-criada no processo MSBuild, adicionando o próximo código em seu arquivo .csproj:
Ao escolher a opção de projeto do Visual Studio Pack (apenas altere para
BeforeTargets="Build"
para executar a tarefa antes de Build), o código RefreshVersion será acionado para calcular o novo número de versão e aXmlPoke
tarefa atualizará sua propriedade .csproj de acordo (sim, ela modificará o arquivo).Ao trabalhar com bibliotecas NuGet, também envio o pacote para o repositório NuGet apenas adicionando a próxima tarefa de compilação ao exemplo anterior.
c:\nuget\nuget
é onde eu tenho o cliente NuGet (lembre-se de salvar sua chave de API NuGet chamandonuget SetApiKey <my-api-key>
ou para incluir a chave na chamada push do NuGet).Apenas no caso de ajudar alguém ^ _ ^.
fonte
Algum tempo atrás eu escrevi um exe rápido e sujo que iria atualizar a versão # em um assemblyinfo. {Cs / vb} - Eu também usei rxfind.exe (uma ferramenta de substituição de pesquisa simples e poderosa baseada em regex) para fazer o atualização de uma linha de comando como parte do processo de construção. Algumas outras dicas úteis:
fonte
Se quiser um número de incremento automático que seja atualizado sempre que uma compilação for concluída, você pode usar VersionUpdater a partir de um evento de pré-construção. Seu evento de pré-compilação pode verificar a configuração de compilação se você preferir, de modo que o número da versão só seja incrementado para uma compilação de lançamento (por exemplo).
fonte