AssemblyInfo.cs subversão e TortoiseSVN
-
06-07-2019 - |
Pergunta
Eu estou usando TortoiseSVN e Visual Studio 2008. Existe alguma maneira de atualizar assemblyinfo.cs do meu projeto com a versão de SVN em cada compilação?
Por exemplo, 1.0.0 [versão do svn.] -> 1.0.0.12
Solução
Você pode usar o SubWCRev ferramenta que vem com TortoiseSVN (também disponível separadamente).
De qualquer executá-lo a partir de uma linha de comando ou usar o COM- objeto que oferece.
A ferramenta de linha de comando SubWCRev substitui palavras-chave dentro de um arquivo com informações de sua cópia de trabalho svn. Um exemplo é mostrado na documentação.
Outras dicas
Eu faço isso na minha script de construção :
<SvnInfo LocalPath=".">
<Output TaskParameter="Revision" PropertyName="BuildRev" />
</SvnInfo>
<FileUpdate Files="protobuf-net\Properties\AssemblyInfo.cs"
Regex='(\[\s*assembly:\s*AssemblyVersion\(\s*"[^\.]+\.[^\.]+)\.([^\.]+)(\.)([^\.]+)("\)\s*\])'
ReplacementText='$1.$2.$(BuildRev)$5' />
usando os tarefas construir a comunidade . Isto essencialmente aplica um regex para os AssemblyInfo.cs, substituindo a actual revisão com a revisão do SVN.
Você pode usar o $Rev$
svn chave mas que dará -lhe a última revisão do arquivo, eu acho que você deseja obter o número de revisão HEAD
.
Dê uma olhada a esta pergunta:
Como você se sente sobre um Visual Studio suplemento fazê-lo?
Sim, você pode adicionar um evento de pré-compilação que chama um script que
- chamadas
svn info
para extrair o número de revisão atual (se você fizer uma atualização antes, você pode incluir diretamente a palavra-chave$Revision$
em um arquivo, verifique também este post ); - modifes seu arquivo de propriedades \ AssemblyInfo.cs em conformidade.
O que eu costumo fazer é transformar um modelo AssemblyInfo.cs quando o projeto é construído. O script é necessário adaptar a forma de $ Revision $ para a sintaxe desse arquivo, infelizmente.
As propriedades interessantes são (onde as cordas modelo são entre '$'):
[assembly: AssemblyVersion("$v$.$build$.$Last Changed Rev$")]
[assembly: AssemblyFileVersion("$v$.$build$.$Last Changed Rev$")]
Edit: svn info
é parte do cliente SVN padrão, não TortoiseSVN como apontado em outro post. Fácil de instalar embora. No entanto, o TortoiseSVN vem com SubWCRev.exe
que transforma um arquivo com a substituição da palavra, para que ele iria fazer o truque se você atualizar sua cópia local.
No Visual Studio 2008, você pode definir um evento de pré-compilação que pode iniciar um script ou um pequeno programa. Dentro deste script ou programa, você pode usar o svnversion comando para obter a revisão do repositório, em seguida, analisar seus AssemblyInfo.cs e modificar o número da versão para o que você deseja.
Eu não tenho certeza se TortoiseSVN vem com svnversion, mas ele vem com o do Windows construção SVN fornecido pela CollabNet
Eu criei um href="http://happyturtle.codeplex.com/" rel="nofollow noreferrer"> versão para o Construir projeto Versão Incremento (que é nomeado na resposta de popester). Este plug-in SVN vai puxar o mais recente número de alteração da revisão de sua cópia de trabalho e permitem que você use isso em seu número de versão, que deve realizar exatamente o que você está tentando fazer.