17

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

我正在使用 MSBuildCommunityTasks。

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

在网站http://msbuildtasks.tigris.org/上,我可以看到一个名为 time 的任务。我一直无法找到有关如何使用 Time 的文档。

4

3 回答 3

42

在 msbuild 4 中,您现在可以

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

所以我正在使用

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

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

于 2011-07-11T21:04:16.000 回答
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>
于 2009-05-18T14:38:08.850 回答
2

马斯洛的回答是正确的(我不能评论或者我会);我只想补充一点,在隐式调用 System.DateTime.Parse 时必须小心。

像这样的已解析字符串值$([System.DateTime]::Parse("1970-01-01T00:00:00.0000000Z")似乎不会以 Kind of 结尾DateTimeKind.Utc

但是您可以使用嵌套的属性函数来使其工作;像这样(获取 Unix 时间戳):

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

于 2016-10-12T16:28:19.727 回答