13

私のmsbuildスクリプトでは、zipファイル名にyear / month / dayを含む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'(ご覧のとおり、1月の先行ゼロはありません)

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

または、[使用しているように見える]コミュニティタスクからTimeタスクへのformatparamを使用します。

MSBuildMSBuildCommunityTasksタスク時間

于 2010-01-22T11:50:17.540 に答える
0

これは、MSBuildが文字列のみで動作するためです。すべてのプロパティがs(またはそれらが返す整数値)stringではなくsを返すように既存のタスクを変更するか、必要に応じて年、月、日をフォーマットする別のタスクを作成する必要があります。int

于 2010-01-22T11:51:05.357 に答える
-1

先行ゼロを追加するための安価で汚い方法は次のとおりです

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