2010-01-22 28 views
10

En mi secuencia de comandos msbuild estoy creando un archivo zip con año/mes/día en el nombre de archivo zip, pero el mes y el día siempre se escriben sin encabezar cero.formato de fecha en el script msbuild?

¿Hay alguna forma de agregar cero a mi nombre de archivo zip?

<Time> 
    <Output TaskParameter="Year" PropertyName="Year" /> 
    <Output TaskParameter="Month" PropertyName="Month" /> 
    <Output TaskParameter="Day" PropertyName="Day" /> 
</Time> 

<PropertyGroup> 
    <ZipOutDir>C:\output</ZipOutDir> 
    <ZipFileName>Application_$(Year)$(Month)$(Day).zip</ZipFileName> 
</PropertyGroup> 

Y el resultado es: 'Application_2010122.zip' (sin ceros a la izquierda de enero, como se puede ver)

Respuesta

4

Se podría utilizar la extensión de MSBuild un paquete de la:

http://www.msbuildextensionpack.com/help/3.5.3.0/html/9c5401ed-6f55-089e-3918-2476c186ca66.htm

O utilice el formato de parámetro a la tarea de tiempo de las tareas de la comunidad [que parecen estar utilizando]

MSBuild MSBuildCommunityTasks Task Time

+0

Gracias ... Ya encontré el enlace posterior y lo usé. – Goran

+0

cosas buenas. BTW Siempre es una buena idea mencionar las bibliotecas de tareas que está usando/abrir para usar al hacer preguntas de este tipo. –

+0

Sería bueno si esta respuesta aceptada realmente tuviera la respuesta a la pregunta agregada. Es decir, ¿cómo, usando el parámetro de formato en la tarea de Tiempo de las tareas de la comunidad, se formatea la fecha para que haya 0 principales en los meses? – ssmith

0

Es porque MSBuild funciona únicamente con cadenas. Tendrá que modificar las tareas existentes para que todas las propiedades devuelvan string s en lugar de int s (o el valor entero que devuelvan), o cree una tarea separada que formateará año, mes y día según sus necesidades.

+0

Dada la cantidad de libs de tareas disponibles, solo quería señalar que su comentario sugiere escribir una tarea en lugar de encontrar una que ya lo haga; estoy seguro de que no tenía intención de hacerlo. (Y utilizaría una tarea de PowerShell para hacer pequeños formateos como este si alguna de las librerías comunes ya no tuviera una tarea) –

+0

@Ruben: ¡Claro! Simplemente no pude encontrar ninguna tarea de formato de cadenas para MSBuild. De lo contrario, definitivamente hubiera sugerido usar uno de esos. –

+0

Interesante que no hay uno en realidad ... Me interesaría saber si la mayoría de la gente usa una tarea de PowerShell si se arrincona en algo como esto. (El mejor ejemplo en el que puedo pensar es que los archivos vdproj necesitan guiones con letras mayúsculas y recurrí a PS para hacer un ToUpper ya que no pude encontrar una Tarea para hacerlo (o producir un Guid capturado)) –

25

In msbuild 4 you can now

$([Namespace.Type]::Method(..parameters…)) 
$([Namespace.Type]::Property) 
$([Namespace.Type]::set_Property(value)) 

así que estoy usando

$([System.DateTime]::Now.ToString(`yyyy.MMdd`)) 

esas garrapatas todo el formato son invertidas no '

-1

Aquí está una manera barata y sucia para añadir un cero a la izquierda

$([System.UInt16]::Parse($(Month)).ToString('00'))