формат даты в скрипте msbuild? - PullRequest
11 голосов
/ 22 января 2010

В моем скрипте 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 ]

26 голосов
/ 12 июля 2011

В msbuild 4 вы можете теперь

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

поэтому я использую

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

эти отметки в формате не являются обратными чертами '

4 голосов
/ 22 января 2010

Вы можете использовать пакет расширений MSBuild а-ля:

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

Или используйте параметр формата для задачи времени из задач сообщества [которые вы, кажется, используете]

MSBuild MSBuildCommunityTasks Time Task

0 голосов
/ 31 октября 2014

Вот дешевый и грязный способ добавить ведущий ноль

$([System.UInt16]::Parse($(Month)).ToString('00'))
0 голосов
/ 22 января 2010

Это потому, что MSBuild работает исключительно со строками. Вам придется либо изменить существующие задачи, чтобы все свойства возвращали string s вместо int s (или любое целочисленное значение, которое они возвращают), либо создать отдельную задачу, которая будет форматировать год, месяц и день в соответствии с вашим необходимо.

...