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>