MSBuild MSBuildCommunityTasks任务时间

17

我有一个MSBuild项目,想要将当前日期添加到我正在创建的zip文件中。

我正在使用MSBuildCommunityTasks。

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

在网站http://msbuildtasks.tigris.org/上,我看到了一个名为“time”的任务。但是我找不到如何使用Time的文档。


4
MSBuild任务包含在安装目录中的CHM文件。每当我需要使用MSBuildCommunityTasks时,我总是让这个文件保持打开状态。 - Min
3个回答

42

在msbuild 4中,现在您可以使用属性函数

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

所以我正在使用

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

那些格式周围的刻度线是反引号而不是 '


4
更多的日期/时间转字符串格式请参考这里:http://www.geekzilla.co.uk/View00FF7904-B510-468C-A2C8-F859AA20581F.htm - riffrazor

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>

2

Maslow的回答是正确的(我不能发表评论,否则我会发表评论);我只想补充一点,就是在隐式调用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"))


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接