2009-09-05 9 views
5

Quiero hacer un objetivo en mi script de MSBuild que:actualización de información de la versión con MSBuild (después de los binarios de compilación)

  • Fetch SVN revisión/fecha y hora de la carpeta fuentes (comando 'svn info')
  • actualización Recurso VERSIONINFO de .EXE y .DLL generados por el destino 'compilar'

¿Hay algo listo para lograr esto? Estoy pidiendo justo antes de reinventar la rueda ... otra

estoy dando una mirada hacia http://msbuildextensionpack.codeplex.com

+0

+1 por una buena pregunta, me interesaría hacerlo yo mismo. – 7wp

+0

¡Yo también! - Pero nuestra solución interna (torpe) está funcionando bien. Entonces ... :) –

Respuesta

5

MSBuild Community Tasks Project es su amigo. Verifique su tarea "SvnInfo".

Además, de Daniel Doubrovkine ResourceLib es una excelente pieza de trabajo y puede evitar que un montón de dolores de cabeza cuando se trata de desenredar el lío creación VERSIONINFO (estado allí, hecho eso ...)

+0

¡Muchas gracias! –

+0

Tenga en cuenta que ResourceLib se ha movido a Github: https://github.com/dblock/resourcelib –

1

Mucho más fácil de hacer esto antes compilación escribiendo un archivo AssemblyInfo (o cualquier archivo con atributos de ensamblaje) incluido en sus proyectos.

Ejemplo de escribir esto en powershell encontrar aquí: https://github.com/craigbeck/rhino-esb/blob/master/psake_ext.ps1#L7-46

Una advertencia - las versiones de .NET no son cualquier cadena, pero ushort s que significa que tienen un máximo de 65535 (ver documentos here). Si usa la revisión svn (como lo hicimos en un punto), su construcción se romperá una vez que excede ese número mágico.

¿Por qué estarías tratando de hacer esto después de la compilación?

+0

Los binarios se generan a partir de 5 compiladores diferentes. Ninguno de ellos para .NET. De todos modos, gracias por el consejo sobre ushorts. –

+0

OK, ahora estoy aún más curioso ... ¿qué idiomas/compiladores? La mención de archivos DLL y EXE me hizo asumir que estaba hablando del desarrollo estándar de .Net (es decir, C#/VB, Visual Studio, etc.). Si ese no es el caso, ¿por qué eligió MSBuild? – craigb

+0

A partir de VS2010, los proyectos nativos de C++ se crean utilizando msbuild. Hay herramientas para actualizar la información de la versión de conjunto, pero para los nativos, la versión todavía se controla a través del recurso VERSIONINFO de las aplicaciones (generalmente en el archivo .rc). – jschroedl

Cuestiones relacionadas