如何在 MSBuild 中输出时间戳

发布于 2024-09-12 01:52:09 字数 707 浏览 8 评论 0原文

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

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

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

我使用 MSBuildCommunityTasks 中的 FileUpdate 来更新

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

What is the best way to output this timestamp using MSBuild?

I am using MSBuild/yuicompressor to combine and minify JavaScript.

As part of this process, I want to modify my script references so they have a timestamp in the querystring. That way, a user always gets the non-cached version of the file when a new release is published. For example:

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

I am using FileUpdate from MSBuildCommunityTasks to update the <script> reference, but it does not have a timestamp:

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

What is the best way to output this timestamp using MSBuild?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

挽清梦 2024-09-19 01:52:09

这个方法对我有用:

<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="<script type='text/javascript' src='/scripts/combined-minified.js?$(Year)$(Month)$(Day)' />"
      />
</Target>

This method worked for me:

<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="<script type='text/javascript' src='/scripts/combined-minified.js?$(Year)$(Month)$(Day)' />"
      />
</Target>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文