2009-10-25 31 views
17

Estoy usando TortoiseSVN y Visual Studio 2008. ¿Hay alguna forma de actualizar el assemblyinfo.cs de mi proyecto con la versión de svn en cada compilación? .AssemblyInfo.cs subversion y TortoiseSVN

Por ejemplo, 1.0.0 [versión de SVN] -> 1.0.0.12

+0

Por "la subversión de mi proyecto", ¿no quiere decir "el proyecto assemblyinfo.cs"? De lo contrario, la oración no tiene sentido para mí. – chiccodoro

Respuesta

13

usted podría utilizar la herramienta SubWCRev que viene con TortoiseSVN (también disponible por separado).

O ejecútelo desde una línea de comandos o use el COM-Object que ofrece.

La herramienta de línea de comandos SubWCRev replaces keywords dentro de un archivo con información de su copia de trabajo svn. Un example se muestra en los documentos.

+5

Pero si se modifica AssembyInfo.cs, aparece en la copia de trabajo como una modificación. Si lo compromete y lo reconstruye, cambia de nuevo. ¿Cómo se puede hacer esto sin modificar los archivos que están bajo control de fuente? –

+0

@Assaf: Es por eso que uno no debe verificar el archivo AssemblyInfo.cs si se genera automáticamente. – chiccodoro

+0

@chiccodoro, creo que te perdiste el sentido de mi pregunta. Parte de la cadena de versión se mantiene constante y la parte se genera automáticamente (el último número). –

2

¿Cómo se siente acerca de un Visual Studio addin hacerlo?

+0

Heh, no sabía esto, parece interesante. – RedGlyph

+0

No parece que ese complemento permita usar el número de revisión de Subversion como el valor. –

+0

Creé un complemento de versión SVN (http://happyturtle.codeplex.com/) para el proyecto Incrementar versión de compilación. Este complemento SVN extraerá el último número de revisión de cambio de su copia de trabajo y le permitirá usarlo en su número de versión, que debería lograr exactamente lo que está tratando de hacer. – grimus

2

Sí, se puede añadir un evento de pre-construcción que llama a un script que

  • llamadas svn info para extraer el número de revisión actual (si se realiza una actualización antes, se pueden incluir directamente la palabra clave $Revision$ en una archivo, también ver this post);
  • modifica su archivo Properties \ AssemblyInfo.cs en consecuencia.

Lo que suelo hacer es transformar una plantilla AssemblyInfo.cs cuando se crea el proyecto. El script es necesario para adaptar la forma de $ Revision $ a la sintaxis de este archivo, desafortunadamente.

Las propiedades interesantes son (donde las cadenas de la plantilla son entre '$'):

[assembly: AssemblyVersion("$v$.$build$.$Last Changed Rev$")] 
[assembly: AssemblyFileVersion("$v$.$build$.$Last Changed Rev$")] 

Editar: svn info es parte del cliente SVN estándar, no TortoiseSVN como se señaló en otro post. Fácil de instalar. Sin embargo, TortoiseSVN viene con SubWCRev.exe que transforma un archivo con sustitución de palabra clave, por lo que sería útil si actualiza su copia local.

1

En Visual Studio 2008, puede definir un evento de preconstrucción que pueda iniciar una secuencia de comandos o un programa pequeño. Dentro de este script o programa, puede usar el comando svnversion para obtener la revisión del repositorio, luego analizar su AssemblyInfo.cs y modificar el número de versión a su gusto.

no estoy seguro de si TortoiseSVN viene con svnversion, pero viene con el Windows SVN build provided by CollabNet

7

hago esto en mi build script:

<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' /> 

utilizando el community build tasks. Esto aplica esencialmente una expresión regular a AssemblyInfo.cs, reemplazando la revisión actual con la revisión svn.

+0

¿Alguna forma de usar estas tareas de compilación sin instalarlas? En otras palabras, ¿es posible tenerlas versionadas junto con el código fuente para que los desarrolladores no tengan que estar al tanto de ellas o preocuparse por instalarlas? – jpierson

+0

@jpierson - Honestamente, no lo he intentado, así que no sé –

+1

Sí, es posible. Debe tener el dll versionned (encontrará el código aquí: http://msbuildtasks.tigris.org/) y escriba la siguiente línea: . Tendrá que escribir una línea para cada tarea que quiera usar. –

0

Creé SVN version plug-in para Build Version Increment project (que se nombra en la respuesta de popester). Este complemento SVN extraerá el último número de revisión de cambio de su copia de trabajo y le permitirá usarlo en su número de versión, que debería lograr exactamente lo que está tratando de hacer.

Cuestiones relacionadas