如何在MSBuild中输出时间戳

时间:2010-07-27 21:36:12

标签: msbuild msbuildcommunitytasks yui-compressor

我正在使用MSBuild / yuicompressor来组合和缩小JavaScript。

作为此过程的一部分,我想修改我的脚本引用,以便它们在查询字符串中有一个时间戳。这样,用户在发布新版本时始终获取文件的非缓存版本。例如:

<script type="text/javascript" src="/scripts/combined-minified.js?20100727" />

我正在使用MSBuildCommunityTasks中的FileUpdate更新<script>引用,但它没有时间戳:

<FileUpdate
      Files="@(includeFile)"
      Regex="#scriptfiletoken#"
      ReplacementText="&lt;script type='text/javascript' src='/scripts/combined-minified.js' /&gt;"
      />

使用MSBuild输出此时间戳的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

这种方法对我有用:

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

<Target Name="MyTarget">
    <!-- Build timestamp. -->
    <Time>
      <Output TaskParameter="Month" PropertyName="Month" />
      <Output TaskParameter="Day" PropertyName="Day"  />
      <Output TaskParameter="Year" PropertyName="Year" />
    </Time>

    <!-- ....... -->    

    <!-- Add timestamp to includeFile -->
    <FileUpdate
      Files="@(includeFile)"
      Regex="#scriptfiletoken#"
      ReplacementText="&lt;script type='text/javascript' src='/scripts/combined-minified.js?$(Year)$(Month)$(Day)' /&gt;"
      />
</Target>