2009-05-18 11 views
16

Mam projekt MSBuild i chcę, aby bieżąca data została dodana do tworzonego pliku ZIP.MSBuild MSBuildCommunityTasks Task Time

Używam MSBuildCommunityTasks.

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

Na stronie http://msbuildtasks.tigris.org/ widzę zadanie o nazwie czas. Nie byłem w stanie znaleźć dokumentu na temat korzystania z czasu.

Każda pomoc będzie świetna.

+4

msbuild zadania zawarte plik CHM w katalogu zainstalowano go w każdym przypadku, gdy muszę używać MSBuildCommunityTasks I zawsze ten plik otwarty.. – Min

Odpowiedz

40

In msbuild 4 you can now

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

więc używam

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

tych kleszczy wokół formatu są backticks nie '

+3

Więcej formatów daty/czasu tostrowania tutaj: 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

odpowiedź Maslowa jest prawidłowe (nie mogę komentować ja lub ja bym); Dodałbym tylko, że trzeba być ostrożnym, gdy niejawnie wywołuję System.DateTime.Parse.

Parsowana wartość ciągu, taka jak $([System.DateTime]::Parse("1970-01-01T00:00:00.0000000Z"), prawdopodobnie nie kończy się na Kind of DateTimeKind.Utc.

Ale możesz użyć nested property functions, aby działało; tak (aby uzyskać znacznik czasu Uniksa):

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