MSBuild MSBuildCommunityTasks Время Выполнения Задачи

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

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

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

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

3 ответов


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

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

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

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

эти тики вокруг формата являются backticks не '


<?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>

ответ Маслоу правильный (я не могу прокомментировать его, или я бы); я бы только добавил, что вы должны быть осторожны, когда неявно вызываете систему.значение datetime.Разбор.

проанализированное строковое значение типа $([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"))