MSBuild MSBuildCommunityTasks Время задачи - PullRequest
16 голосов
/ 18 мая 2009

У меня есть проект MSBuild, и я хочу, чтобы текущая дата была добавлена ​​в создаваемый мной zip-файл.

Я использую MSBuildCommunityTasks.

<!-- Import the CommunityTasks Helpper -->
<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" />

На сайте http://msbuildtasks.tigris.org/ я вижу задачу под названием время. Я не смог найти документ о том, как использовать время.

Ответы [ 3 ]

40 голосов
/ 12 июля 2011

В msbuild 4 вы можете теперь

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

поэтому я использую

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

эти отметки в формате не являются обратными галочками, а '

21 голосов
/ 18 мая 2009
<?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 голос
/ 12 октября 2016

Ответ Маслоу правильный (я не могу это прокомментировать, или я бы это сделал); Я только добавил бы к этому, что вы должны быть осторожны при неявном вызове System.DateTime.Parse.

Анализируемое строковое значение, такое как $([System.DateTime]::Parse("1970-01-01T00:00:00.0000000Z"), похоже, не заканчивается видом DateTimeKind.Utc.

Но вы можете использовать вложенные функции свойств , чтобы заставить его работать; вот так (чтобы получить метку времени Unix):

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

...