2009-05-18 13 views
16

Ho un progetto MSBuild e voglio che la data corrente venga aggiunta a un file zip che sto creando.MSBuild MSBuildCommunityTasks Task Time

Sto utilizzando MSBuildCommunityTasks.

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

Sul sito http://msbuildtasks.tigris.org/ posso vedere un compito chiamato tempo. Non sono stato in grado di trovare documenti su come utilizzare il tempo.

Qualsiasi aiuto sarebbe fantastico.

+4

compiti MSBuild incluso un file CHM nella directory è stato installato in Ogni volta che devo usare MSBuildCommunityTasks ho sempre mantenere quel file aperto.. – Min

risposta

40

In msbuild 4 you can now

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

così io sto usando

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

quelle zecche in tutto il formato sono apici inversi non '

+3

Altri formati di data/ora tostring qui: 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

risposta di Maslow è corretta (non riesco a commentare o io lo sarei); Vorrei solo aggiungere che devi stare attento quando chiamate implicitamente System.DateTime.Parse.

Un valore di stringa analizzato come $([System.DateTime]::Parse("1970-01-01T00:00:00.0000000Z") non sembra finire con un tipo di DateTimeKind.Utc.

Ma è possibile utilizzare nested property functions per farlo funzionare; come questo (per ottenere il timestamp Unix):

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