visual tortoise subversion studio for extension c# .net visual-studio-2010 svn tortoisesvn

c# - subversion - Enlace del número de revisión de Tortoise SVN a la versión de ensamblaje



tortoise svn subversion (4)

Estaría buscando en el paquete de extensión de MSbuild.

Hay una extensión de Subversion que recuperará las cosas de SVN automáticamente. Enlace aquí: Ayuda de MSBuild Subversion Extension

En segundo lugar, podría usar eso con otras extensiones para establecer la versión de un directorio mediante programación. Dependiendo de su diseño en su sistema SCM, es posible que pueda crear versiones de cada directorio en su propio repositorio como este.

Estoy desarrollando un programa en C # .net en Visual Studio y una versión que lo controle con la tortuga SVN.

Actualmente estoy creando la versión de ensamblaje basada en el número de compilación.

¿Hay alguna manera de vincular la parte final de una versión de ensamblaje de proyectos al número de revisión en SVN de tortuga, por ejemplo:

pseudo codigo

[assembly: AssemblyVersion("1.0.0."+SvnRevisionNumber.ToString())]

Esto aseguraría que mis ensamblajes fueran nombrados después, no su número de compilación, sino después del último número de revisión confirmado en el repositorio.


Lo que uso es llamar a un archivo cmd en el evento posterior a la compilación:

@echo off if %1x==x goto ERROR SET ProjectDir=%1 SET SubWCRev="C:/Program Files/TortoiseSVN/bin/SubWCRev.exe" if exist %SubWCRev% goto USESUBWCREV REM Default to copying a default version copy %ProjectDir%/Properties/AssemblyInfo.default.cs %ProjectDir%/Properties/AssemblyInfo.cs echo default goto END REM We don''t want to modify AssemblyInfo.cs every time, only when a revision REM changes. Thus, we want to first compare the last compiled revision with REM the current revision, and only update if they''ve changed. :USESUBWCREV %SubWCRev% %ProjectDir% %ProjectDir%/Properties/rev.subwcrev-template %ProjectDir%/Properties/rev.current.tmp if exist %ProjectDir%/Properties/rev.last-build.tmp goto CHECKREV goto NEWREV REM Fetch the current revision and compare to last-build revision :CHECKREV fc %ProjectDir%/Properties/rev.last-build.tmp %ProjectDir%/Properties/rev.current.tmp > NUL REM Only update if it''s a new revision if errorlevel 1 goto NEWREV goto END REM Current revision doesn''t match last-build revision. Update! :NEWREV echo newRev if exist %ProjectDir%/Properties/rev.last-build.tmp del %ProjectDir%/Properties/rev.last-build.tmp copy %ProjectDir%/Properties/rev.current.tmp rev.last-build.tmp echo use template %SubWCRev% %ProjectDir% %ProjectDir%/Properties/AssemblyInfo.subwcrev-template.cs %ProjectDir%/Properties/AssemblyInfo.cs echo done goto END :ERROR echo Usage: %0 project_dir echo. echo For example: echo %0 C:/projects/MyProjectDir echo. goto END :END


Puedes usar algo como esto para obtener el número de revisión svn.

<echo message="Retrieving Subversion command line: ${rvsnCommandLine} into ${deployment.SourceDir}"/> <exec program="svn.exe" workingdir="${deployment.SourceDir}" commandline=''update ${rvsnCommandLine}'' failonerror="false"/> <echo message="Retrieving Subversion revision number ${svn.revision}"/> <exec program="svn.exe" commandline=''log "${deployment.SourceDir}" ${rvsnCommandLine} --xml --limit 1'' output="${deployment.SourceDir}/_revision.xml" failonerror="false"/> <xmlpeek file="${deployment.SourceDir}/_revision.xml" xpath="/log/logentry/@revision" property="svn.revision" failonerror="false"/> <echo message="Using Subversion revision number: ${svn.revision}"/>

Es más o menos el resultado de la revisión svn a un archivo xml y luego se asoma xml para obtener el número de revisión.

Quizás pueda usar esto como un evento previo a la compilación y luego actualizar su assemblyinfo con el nuevo número de versión.

También revise este hilo para obtener más información. Versión SVN Revisión en .NET Assembly w / out CC.NET


Revisa los espacios y comillas en el archivo de proyecto C #.

<PreBuildEvent> if exist "C:/Program Files/TortoiseSVN/bin/SubWCRev.exe" "C:/Program Files/TortoiseSVN/bin/SubWCRev.exe" "$(ProjectDir)." "$(ProjectDir)Properties/AssemblyInfo.Base.cs" "$(ProjectDir)Properties/AssemblyInfo.cs" </PreBuildEvent>