2009-05-18 13 views
16

Tengo un proyecto de MSBuild y quiero que la fecha actual se agregue a un archivo comprimido que estoy creando.MSBuild MSBuildCommunityTasks Task Time

Estoy usando MSBuildCommunityTasks.

'' '<'Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"'/>'

En el sitio web http://msbuildtasks.tigris.org/ Veo una tarea llamada tiempo. No he podido encontrar el documento sobre cómo usar el tiempo.

Cualquier ayuda sería genial.

+4

tareas La MSBuild incluyen un archivo CHM en el directorio que ha instalado en Cada vez que tengo que usar MSBuildCommunityTasks Siempre mantener ese archivo abierto.. – Min

Respuesta

40

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 '

+3

Más formatos de fecha/hora tostring aquí: http://www.geekzilla.co.uk/View00FF7904-B510-468C-A2C8-F859AA20581F.htm –

21
<?xml version="1.0" encoding="utf-8"?> 

<Project DefaultTargets="Deploy" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 

<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/> 

    <!-- Include MSBuild tasks here --> 

    <ItemGroup>  
     <DefaultExclude Include="****" />   
    </ItemGroup> 


<Target Name="Deploy" > 

    <Time Format="yyyy-MM-dd"> 
    <Output TaskParameter="FormattedTime" PropertyName="buildDate" /> 
    </Time> 

    <Message Text="Deploying ...."></Message> 

    <Copy SourceFiles="@(DeploymentFiles)" DestinationFolder="C:\CCNET\$(buildDate)\bin\" /> 

</Target> 

</Project> 
1

respuesta de Maslow es correcta (no puedo comentar o lo haría); Solo agregaría que debe tener cuidado al llamar implícitamente a System.DateTime.Parse.

Un valor de cadena analizada como $([System.DateTime]::Parse("1970-01-01T00:00:00.0000000Z") no parece terminar con un tipo de DateTimeKind.Utc.

Pero puede usar nested property functions para hacerlo funcionar; como esta (para obtener la marca de tiempo Unix):

$([System.DateTime]::UtcNow.Subtract($([System.DateTime]::Parse("1970-01-01T00:00:00.0000000Z").ToUniversalTime())).TotalSeconds.ToString("F0"))