【问题标题】:date format in msbuild script?msbuild脚本中的日期格式?
【发布时间】:2011-01-08 04:25:25
【问题描述】:

在我的 msbuild 脚本中,我正在创建一个 zip 文件名中包含年/月/日的 zip 文件,但月份和日期始终不带前导零。

有没有办法在我的 zip 文件名中添加前导零?

<Time>
  <Output TaskParameter="Year" PropertyName="Year" />
  <Output TaskParameter="Month" PropertyName="Month" />
  <Output TaskParameter="Day" PropertyName="Day" />
</Time>

<PropertyGroup>
  <ZipOutDir>C:\output</ZipOutDir>
  <ZipFileName>Application_$(Year)$(Month)$(Day).zip</ZipFileName>
</PropertyGroup>

结果是:'Application_2010122.zip'(如您所见,一月份没有前导零)

【问题讨论】:

    标签: date msbuild scripting msbuild-task msbuildcommunitytasks


    【解决方案1】:

    您可以使用 MSBuild 扩展包:

    http://www.msbuildextensionpack.com/help/3.5.3.0/html/9c5401ed-6f55-089e-3918-2476c186ca66.htm

    或者将格式参数用于社区任务中的时间任务[您似乎正在使用]

    MSBuild MSBuildCommunityTasks Task Time

    【讨论】:

    • 好东西。顺便说一句,在询问此类问题时提及您正在使用/开放使用的任务库总是一个好主意。
    • 如果这个被接受的答案实际上已经添加了问题的答案,那就太好了。也就是说,如何使用社区任务中的时间任务中的格式参数来格式化日期,以便月份有前导 0?
    • 如果你手头有特定的咒语,你聊天,gist或邮寄给我,很高兴把它粘贴进去。回答它的时候,我个人没有sn-p可以解除来自我可以确信在回答时不会误导或不正确的生产系统。 (看到你最近的博客文章,所以我确定你有一个(订阅并通过@CSharpFeeds 看到它))。请记住,我不是@Sayed Ibrahim Hashimi,它只会为娱乐价值卷起一个完整的工作测试示例:P
    • @ssmith:出于某种原因,我在最后的回复中省略了@ssmith,Doh!
    【解决方案2】:

    这是因为 MSBuild 仅使用字符串进行操作。您必须修改现有任务,以便所有属性将返回 strings 而不是 ints(或它们返回的任何整数值),或者创建一个单独的任务,根据您的需要。

    【讨论】:

    • 考虑到任务库的数量,只是想指出您的评论建议编写一个任务而不是找到一个已经完成的任务-我确定您不是故意的。 (如果我有一个常见的库还没有任务,我会使用 PowerShell 任务来做像这样的微小格式化黑客)
    • @Ruben:当然!我只是找不到任何用于 MSBuild 的字符串格式化任务。否则我肯定会建议使用其中之一。
    • 有趣的是实际上没有一个...我很想知道如果大多数人在这样的事情上走投无路时是否使用 PowerShell 任务? (我能想到的最好的例子是 vdproj 文件需要带有大写字母的 guid,我求助于 PS 来做一个 ToUpper,因为我找不到任务来做它(或产生一个大写的 Guid))
    【解决方案3】:

    In msbuild 4 you can now

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

    所以我正在使用

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

    格式周围的那些记号是反引号而不是'

    【讨论】:

      【解决方案4】:

      这是添加前导零的一种廉价而肮脏的方法

      $([System.UInt16]::Parse($(Month)).ToString('00'))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-26
        • 1970-01-01
        相关资源
        最近更新 更多