Eu estava pensando como poderia incrementar automaticamente a compilação (e versão?) Dos meus arquivos usando o Visual Studio (2005).
Se eu procurar as propriedades do say C:\Windows\notepad.exe
, a guia Versão exibirá "Versão do arquivo: 5.1.2600.2180". Gostaria de obter esses números interessantes também na versão das minhas DLLs, não na versão 1.0.0.0, o que vamos encarar é um pouco chato.
Eu tentei algumas coisas, mas não parece ser uma funcionalidade pronta para uso, ou talvez eu esteja apenas procurando no lugar errado (como de costume).
Trabalho principalmente com projetos web ....
Eu olhei para os dois:
- http://www.codeproject.com/KB/dotnet/Auto_Increment_Version.aspx
- http://www.codeproject.com/KB/dotnet/build_versioning.aspx
e eu não podia acreditar que tanto esforço para fazer algo é uma prática padrão.
Edição: ele não funciona no VS2005, tanto quanto eu posso dizer ( http://www.codeproject.com/KB/dotnet/AutoIncrementVersion.aspx )
Respostas:
No visual Studio 2008, o seguinte funciona.
Localize o arquivo AssemblyInfo.cs e encontre estas 2 linhas:
Você pode tentar mudar isso para:
Mas isso não fornecerá o resultado desejado, você terminará com uma versão do produto 1.0. * E uma versão do arquivo 1.0.0.0 . Não é o que você quer!
No entanto, se você remover a segunda dessas linhas e tiver:
Em seguida, o compilador definirá a versão do arquivo como igual à versão do produto e você obterá o resultado desejado de um produto e versão de arquivo incrementados automaticamente que estejam sincronizados. Por exemplo 1.0.3266.92689
fonte
abra o arquivo AssemblyInfo.cs e altere
para
você pode fazer isso no IDE indo para projeto -> propriedades -> informações de montagem
Isso, no entanto, permitirá apenas incrementar automaticamente a versão do Assembly e fornecerá a você
caixa de mensagem se você tentar colocar um * no campo versão do arquivo.
Então, basta abrir o assemblyinfo.cs e fazê-lo manualmente.
fonte
Outra opção para alterar os números de versão em cada compilação é usar a tarefa Versão do MSBuild.Community.Tasks . Basta baixar o instalador, instalar, adaptar o código a seguir e colá-lo
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
no.csproj
arquivo:Nota: Adapte a propriedade StartDate ao seu código do idioma. Atualmente, ele não usa a cultura invariável.
Para a terceira compilação em 14 de janeiro de 2010, isso cria um
VersionInfo.cs
com este conteúdo:Esse arquivo deve ser adicionado ao projeto (via Adicionar item existente ), e as linhas
AssemblyVersion
eAssemblyFileVersion
devem ser removidasAssemblyInfo.cs
.Os diferentes algoritmos para alterar os componentes da versão são descritos em
$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.chm
e em Propriedades da versão .fonte
Eu vim com uma solução semelhante aos cristãos, mas sem depender das tarefas da Comunidade MSBuild, essa não é uma opção para mim, pois não quero instalar essas tarefas para todos os nossos desenvolvedores.
Estou gerando código e compilando em um assembly e quero incrementar automaticamente os números de versão. No entanto, não posso usar o truque do VS 6.0. * AssemblyVersion, pois aumenta automaticamente os números de compilação todos os dias e quebra a compatibilidade com os assemblies que usam um número de compilação mais antigo. Em vez disso, quero ter um AssemblyVersion codificado, mas um AssemblyFileVersion com incremento automático. Eu consegui isso especificando AssemblyVersion no AssemblyInfo.cs e gerando um VersionInfo.cs no MSBuild como este,
Isso gerará um arquivo VersionInfo.cs com um atributo Assembly para AssemblyFileVersion, em que a versão segue o esquema de YY.MM.DD.TTTT com a data de compilação. Você deve incluir esse arquivo no seu projeto e construir com ele.
fonte
[System.DateTime]::Now
em um, caso contrário, há uma condição de corrida que pode fazer com que um número de compilação antigo seja usado se for construído perto da meia-noite.DateTime.ToString
para fins demonstrativos ou existe um motivo específico?Instale o suplemento Build Version Increment . Dá a você muito mais controle do que a opção *.
fonte
Para obter os números das versões, tente
Para definir o número da versão, crie / edite AssemblyInfo.cs
Também como observação lateral, o terceiro número é o número de dias desde 1/2/2000 e o quarto número é metade da quantidade total de segundos no dia. Portanto, se você compilar à meia-noite, deve ser zero.
fonte
Existe uma extensão do visual studio Automatic Versions que suporta o Visual Studio (2012, 2013, 2015) 2017 e 2019.
Capturas de tela
fonte
Definir um * no número da versão em AssemblyInfo ou nas propriedades do projeto, conforme descrito nas outras postagens, não funciona com todas as versões do Visual Studio / .NET.
Afaik, ele não funcionou no VS 2005 (mas no VS 2003 e VS 2008). Para o VS 2005, você pode usar o seguinte: Incremento automático Número da versão e versão do Visual Studio 2005 em tempo de compilação .
Mas lembre-se de que alterar o número da versão automaticamente não é recomendado para montagens de nome forte. O motivo é que todas as referências a essa montagem devem ser atualizadas sempre que a montagem referenciada é reconstruída devido ao fato de que as referências de montagem com nome forte são sempre uma referência a uma versão de montagem específica. A própria Microsoft altera o número da versão dos assemblies do .NET Framework somente se houver alterações nas interfaces. (NB: Ainda estou procurando o link no MSDN onde li isso.)
fonte
Para obter informações de incremento (DateTime) na propriedade AssemblyFileVersion, que tem a vantagem de não quebrar nenhuma dependência.
Com base na solução do Boog (não funcionou para mim, talvez por causa do VS2008?), Você pode usar uma combinação de um evento de pré-compilação gerando um arquivo, adicionando esse arquivo (incluindo suas propriedades de versão) e usando uma maneira de ler esses valores novamente. Isso é..
Evento de Pré-Construção:
Inclua o arquivo VersionInfo.cs resultante (subpasta Propriedades) em seu projeto
Código para obter a data de volta (anos até segundos):
Não é muito confortável .. também, não sei se isso cria muitas reconstruções de força (já que um arquivo sempre muda).
Você pode torná-lo mais inteligente, por exemplo, se você atualizar apenas o arquivo VersionInfo.cs a cada poucos minutos / horas (usando um arquivo temporário e, em seguida, copiando / substituindo o VersionInfo.cs real se uma alteração grande o suficiente for detectada). Eu fiz isso uma vez com bastante sucesso.
fonte
Defina o número da versão como "1.0. *" E ele preencherá automaticamente os dois últimos números com a data (em dias de algum ponto) e a hora (meio segundo da meia-noite)
fonte
Está nas propriedades do seu projeto em Publicar
(~ http://screencast.com/t/Vj7rhqJO )
fonte
O Cake suporta o patch de arquivos AssemblyInfo. Com o bolo em mãos, você tem inúmeras maneiras de implementar o incremento automático de versão.
Exemplo simples de incrementar versão como o compilador C #:
Aqui:
Observe que você pode corrigir não apenas as versões, mas também todas as outras informações necessárias .
fonte
Vá para Projeto | Propriedades e, em seguida, Informações da montagem e, em seguida, Versão da montagem e coloque um * na última ou na penúltima caixa (você não pode incrementar automaticamente os componentes Maior ou Menor).
fonte
Use a tarefa AssemblyInfo do projeto MSBuild Community Tasks ( http://msbuildtasks.tigris.org/ ) e integre-a ao seu arquivo .csproj / .vbproj.
Possui várias opções, incluindo uma para vincular o número da versão à data e hora do dia.
Recomendado.
fonte
A partir de agora, para minha inscrição,
retorna
ver = 1.0.3251.27860
O valor 3251 é o número de dias desde 1/1/2000. Eu o uso para colocar uma data de criação da versão na tela inicial do meu aplicativo. Ao lidar com um usuário, posso perguntar a data de criação mais fácil de se comunicar do que um número longo.
(Eu sou um departamento individual que apoia uma pequena empresa. Essa abordagem pode não funcionar para você.)
fonte
Alterar o AssemblyInfo funciona no VS2012. Parece estranho que não haja mais suporte para isso no Visual Studio; você acha que essa é uma parte básica do processo de compilação / liberação.
fonte
Como obter a versão
{major}.{year}.1{date}.1{time}
Este é meio experimental, mas eu gosto. Inspirado por Jeff Atwood @ CodingHorror ( link ).
O número da versão resultante se torna
1.2016.10709.11641
(ou seja, 09/07/2016 - 16:41), o que permite1
)Adicione um novo item ao seu projeto, selecione Geral -> Modelo de Texto, nomeie-o como algo
CustomVersionNumber
e (onde aplicável) comenteAssemblyVersion
eAssemblyFileVersion
entreProperties/AssemblyInfo.cs
.Em seguida, ao salvar este arquivo ou criar o projeto, isso gerará novamente um
.cs
arquivo localizado como um subitem no.tt
arquivo criado .fonte
Eu criei um aplicativo para incrementar a versão do arquivo automaticamente.
adicione a seguinte linha para pré-construir a linha de comando do evento
C: \ temp \ IncrementFileVersion.exe $ (SolutionDir) \ Properties \ AssemblyInfo.cs
Construa o projeto
Para simplificar, o aplicativo só lança mensagens se houver um erro. Para confirmar que funcionou bem, você precisará verificar a versão do arquivo em 'Informações da montagem'
Nota: Você precisará recarregar a solução no Visual studio para o botão 'Informações da montagem' para preencher os campos; no entanto, seu arquivo de saída terá a versão atualizada.
Para sugestões e solicitações, envie um email para [email protected]
fonte
No Visual Studio 2019
Não foi o suficiente para eu adicionar
Ao construí-lo lança-me este erro
Solução
O formato foi finalmente aceitou depois que eu jogo
Deterministic
paraFalse
emproject.csproj
Editar:
Por algum motivo, defini-lo
Deterministic
como umaFalse
bagunça no meu arquivo de configuração, carregando-o e salvando-o em diferentes locais.Gambiarra:
Configurei um evento pós-compilação para incrementar o número da revisão:
Script em lote de evento pós-compilação
Isso chama um script do PowerShell denominado
autoincrement_version.ps1
passando como argumento o caminho deAssemblyInfo.cs
Script Poweshell
Incrementa automaticamente o número da revisão usando o Regex
fonte
Talvez, para esta tarefa, você possa usar código como este:
e chame-o de carregamento de formulário.
Com esse código, você pode atualizar qualquer parte das informações do arquivo em AssemblyInfo.cs (mas você deve usar a estrutura de diretórios "padrão").
fonte
AssemblyInfoUtil . Livre. Código aberto.
fonte
Estou usando essa abordagem https://stackoverflow.com/a/827209/3975786 colocando o modelo T4 em "Itens da solução" e usando-o com "Adicionar como link" em cada projeto.
fonte
Talvez seja tarde demais para responder aqui, mas espero que isso resolva o agitado problema de alguém.
Uma maneira automática de alterar a versão de montagem de todos os seus projetos usando o script do PowerShell. Este artigo resolverá muitos dos seus problemas.
fonte
Cada vez que eu faço uma compilação, ela incrementa automaticamente o dígito menos significativo.
Eu não tenho nenhuma idéia de como atualizar os outros, mas você já deve estar vendo isso ...
fonte
Para quem usa o Tortoise Subversion, você pode vincular um de seus números de versão ao número de Revisão do seu código fonte. Acho isso muito útil (os auditores também gostam disso!). Você faz isso chamando o utilitário WCREV em sua pré-construção e gerando seu AssemblyInfo.cs a partir de um modelo.
Se o seu modelo se chama AssemblyInfo.wcrev e fica no diretório AssemblyInfo.cs normal, e o tartaruga está no diretório de instalação padrão, o comando Pré-Compilação fica assim: (NB Tudo em uma linha):
O arquivo de modelo incluiria a cadeia de substituição do token wcrev: $ WCREV $
eg
Nota:
Como seu AssemblyInfo.cs agora é gerado, você não deseja que sua versão seja controlada.
fonte