Como faço para sincronizar o número de revisão do SVN com meu web site ASP.NET?

votos
84

Stack Overflow tem um número de versão subversão na parte inferior:

svn revisão: 679

Eu quero usar tais versionamento automático com os meus .NET Web Site/Application, Windows Forms, projetos WPD / soluções.

Como posso implementar isso?

Publicado 01/08/2008 em 19:00
fonte usuário
Em outras línguas...                            


7 respostas

votos
29

Parece que Jeff está usando CruiseControl.NET baseado em algum folheando as transcrições de podcast. Isto parece ter automatizado recursos de implantação de controle de origem para a produção. Isso pode ser onde a inserção está acontecendo?

Respondeu 01/08/2008 em 19:24
fonte usuário

votos
26

Fazemos isso com xUnit.net para o nosso compilações automatizadas. Nós usamos CruiseControl.net(e estão tentando TeamCity). A tarefa MSBuild que corremos para a integração contínua muda automaticamente o número de compilação para nós, de modo que o arquivo de construção ZIP resultante contém um conjunto corretamente com versão de DLLs e EXEs.

Nosso arquivo MSBuild contém uma referência UsingTask para uma DLL que faz substituições de expressão regular: (você está convidado a usar este DLL, como ele é coberto pela licença MS-PL também)

  <UsingTask
     AssemblyFile = "3rdParty \ CodePlex.MSBuildTasks.dll"
     TaskName = "CodePlex.MSBuildTasks.RegexReplace" />

Em seguida, extraímos o número de compilação, que é fornecida automaticamente pelo sistema CI. Você também pode obter o seu provedor de controle de origem para fornecer o número de revisão fonte, se quiser, mas encontramos a build # no sistema CI foi mais útil, porque não só pode ver os resultados de integração pelo número CI compilação, que também fornece um ligar de volta para o conjunto de alterações (s) que foram incluídos na compilação.

 <! - Cascading tenta encontrar um número de compilação ->

 <PropertyGroup Condition = " '$ (BuildNumber)' == ''">
   <BuildNumber> $ (BUILD_NUMBER) </ BuildNumber>
 </ PropertyGroup>
 <PropertyGroup Condition = " '$ (BuildNumber)' == ''">
   <BuildNumber> $ (CCNetLabel) </ BuildNumber>
 </ PropertyGroup>
 <PropertyGroup Condition = " '$ (BuildNumber)' == ''">
   <BuildNumber> 0 </ BuildNumber>
 </ PropertyGroup>

(Tentamos BUILD_NUMBER, que é de TeamCity, então CCNetLabel, que é de CC.net, e se não estiver presente, o padrão é 0, para que possamos testar o script de construção automatizado manualmente.)

Em seguida, temos uma tarefa que define o número de compilação em um arquivo GlobalAssemblyInfo.cs que nós link em todos os nossos projetos:

 <Meta Name = "SetVersionNumber">
   <REGEXREPLACE
       Padrão = 'AssemblyVersion \ ( "(\ d + \. \ D + \. \ D +) \. \ D +" \)'
       Substituição = 'AssemblyVersion ( "$ 1. $ (BuildNumber)")'
       Arquivos = 'GlobalAssemblyInfo.cs' />
   <Exec Command = "attrib xunit.installer \ App.manifest" />
 </ Target>

Este encontrar o atributo AssemblyVersion, e substitui o número da versão ABCD com abcBuildNumber. Nós geralmente vai deixar a fonte marcada na árvore com as três primeiras partes do número de construtor fixo, eo quarto em zero (fe, hoje é 1.0.2.0).

Em seu processo de construção, certifique-se a tarefa SetVersionNumber precede a sua tarefa de compilação. No final, usamos a nossa tarefa Zip zip-se os resultados da construção de modo que temos uma história dos binários para cada compilação automatizada.

Respondeu 16/08/2008 em 19:00
fonte usuário

votos
24

Você pode fazê-lo adicionando o seguinte em qualquer lugar em seu código

$Id:$

Assim, por exemplo @ Jeff fez:

<div id="svnrevision">svn revision: $Id:$</div>

e quando o check-in do servidor substituído $ Id: $ com o número de revisão atual. Eu também encontrei esta referência .

Há também $ Date: $ , $ Rev: $ , $ Revision: $

Respondeu 01/08/2008 em 19:08
fonte usuário

votos
17

Se você estiver usando ASP.Net MVC(como StackOverflow faz), eu escrevi um fácil de seguir o guia de 3 passos sobre como obter e apresentar a última revisão SVN automaticamente . O guia foi inspirado pensando comigo mesmo sobre essa questão! : o)

Respondeu 17/12/2008 em 11:17
fonte usuário

votos
10

@Balloon Se você estiver usando TortoiseSVN, você pode usar o embalado SubWCRev programa. Ele consulta uma cópia de trabalho e diz-lhe apenas o maior número de revisão. Na verdade, esta parece ser uma abordagem do lado do cliente para um problema do lado do servidor, mas já que é um bom programa de linha de comando, você deve ser capaz de capturar sua saída para uso com bastante facilidade.

Respondeu 15/09/2008 em 20:04
fonte usuário

votos
9

$reve outros como ele são revisões para os arquivos individuais, para que eles não vai mudar a menos que as alterações de arquivos. O número na página da Web é (muito provavelmente, eu estou supondo aqui) o número de revisão do SVN para todo o projecto. Isso é diferente do que as revisões de arquivos, que outros têm vindo a apontar para.

Neste caso, eu supor que CCNET está puxando o número de revisão do projeto e reescrever uma parte da página com esse número. Qualquer solução CI deve ser capaz de fazer isso, configurá-me com CCNET e TeamCity (embora não seja webpages, mas versionamento automático de versões de implantação / montagem).

Para que você para fazer isso, use uma solução CI que o suporta, ou utilizar o seu processo de construção (MSbuild / Nant) para armazenar essa versão e escrevê-lo para os arquivos antes de "implantação"-lo.

Respondeu 13/08/2008 em 02:28
fonte usuário

votos
5

Para adicionar a resposta da @ BradWilson: "Você também pode obter o seu provedor de controle de origem para fornecer o número de revisão fonte se você quiser"

Para conectar subversão e MSBuild: Comunidade MSBuild Tasks Projeto

Respondeu 01/10/2008 em 12:51
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more