13

在我的 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'(一月没有前导零,如您所见)

4

4 回答 4

30

在 msbuild 4 中,您现在可以

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

所以我正在使用

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

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

于 2011-07-11T21:04:53.333 回答
4

您可以使用 MSBuild 扩展包:

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

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

MSBuild MSBuildCommunityTasks 任务时间

于 2010-01-22T11:50:17.540 回答
0

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

于 2010-01-22T11:51:05.357 回答
-1

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

$([System.UInt16]::Parse($(Month)).ToString('00'))
于 2014-10-31T20:15:48.647 回答