Hacemos esto con xUnit.net para nuestras compilaciones automáticas. Usamos CruiseControl.net
(y estamos probando TeamCity). La tarea MSBuild que ejecutamos para la integración continua cambia automáticamente el número de compilación para nosotros, por lo que el archivo ZIP de compilación resultante contiene un conjunto de DLL y EXEs correctamente versionados.
Nuestra MSBuild file contiene una referencia UsingTask para un DLL que hace reemplazos de expresiones regulares: (le invitamos a utilizar este archivo DLL, ya que está cubierto por la licencia de MS-PL así)
<UsingTask
AssemblyFile="3rdParty\CodePlex.MSBuildTasks.dll"
TaskName="CodePlex.MSBuildTasks.RegexReplace"/>
A continuación, extraemos el número de compilación, que es provisto automáticamente por el sistema de CI. También podría hacer que su proveedor de control de origen proporcione el número de revisión de origen si lo desea, pero descubrimos que el # de compilación en el sistema de IC era más útil, porque no solo puede ver los resultados de integración por el número de compilación CI, sino que también proporciona un enlace de regreso al conjunto de cambios que se incluyeron en la compilación.
<!-- Cascading attempts to find a build number -->
<PropertyGroup Condition="'$(BuildNumber)' == ''">
<BuildNumber>$(BUILD_NUMBER)</BuildNumber>
</PropertyGroup>
<PropertyGroup Condition="'$(BuildNumber)' == ''">
<BuildNumber>$(ccnetlabel)</BuildNumber>
</PropertyGroup>
<PropertyGroup Condition="'$(BuildNumber)' == ''">
<BuildNumber>0</BuildNumber>
</PropertyGroup>
(Tratamos BUILD_NUMBER, que es de TeamCity, entonces ccnetlabel, que es de CC.net, y si no está presente, omitimos a 0, por lo que podemos probar el script de creación automatizado manualmente.)
Luego, tenemos una tarea que establece el número de compilación en un archivo GlobalAssemblyInfo.cs de que enlace en todos nuestros proyectos:
<Target Name="SetVersionNumber">
<RegexReplace
Pattern='AssemblyVersion\("(\d+\.\d+\.\d+)\.\d+"\)'
Replacement='AssemblyVersion("$1.$(BuildNumber)")'
Files='GlobalAssemblyInfo.cs'/>
<Exec Command="attrib -r xunit.installer\App.manifest"/>
</Target>
este hallazgo el atributo AssemblyVersion, y reemplaza el número de versión con ABCD abcBuildNumber. Por lo general, dejaremos la fuente seleccionada en el árbol con las tres primeras partes del número de constructor corregidas, y la cuarta en cero (es decir, hoy es 1.0.2.0).
En el proceso de compilación, asegúrese de que la tarea SetVersionNumber precede a su tarea de compilación. Al final, utilizamos nuestra tarea Zip para comprimir los resultados de compilación para que tengamos un historial de los archivos binarios para cada compilación automatizada.
[http://stackoverflow.com/questions/29802/how-do-you-do-version-a-web-application#30168][1] [1]: http://stackoverflow.com/questions/29802/how-do-you-do-version-a-web-application#30168 – Azhar
@Balloon Si está utilizando TortoiseSVN, puede usar el paquete [SubWCRev] (http: //tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-subwcrev.html) programa. Consulta una copia de trabajo y le indica el número de revisión más alto. Es cierto que esto parece ser un enfoque del lado del cliente para un problema del lado del servidor, pero dado que es un buen programa de línea de comandos, debería poder capturar su salida para usarla con bastante facilidad. – nickf
Si no está utilizando TortoiseSVN para SubWCRev como dije [aquí] (http://stackoverflow.com/questions/163/how-do-i-sync-the-svn-revision-number-with-my-aspnet -web-site # 65747), puede usar [svnversion] (http://svnbook.red-bean.com/en/1.5/svn-book.html#svn.ref.svnversion) que hace lo mismo. – nickf