Использование математических операторов в свойствах MSBuild - PullRequest
0 голосов
/ 06 февраля 2020

Цель этого - установить версию сборки в качестве временной метки даты сборки. Я использую файл Directory.Build.props для установки свойств проекта, в котором у меня есть следующее:

<PropertyGroup>
    <Version>$([System.DateTime]::Now.Month).$([System.DateTime]::Now.Day).$([System.DateTime]::Now.Year)</Version>
</PropertyGroup>

Это прекрасно работает, но я хотел бы увеличить разрешение отметки времени, добавив общее количество секунд Прошло в тот же день.

Я могу довольно легко получить это значение, выполнив $([System.DateTime]::Now.TimeOfDay.TotalSeconds), но это Double, и для версии необходим UInt16 - 1.

I think Я могу преобразовать в UInt16, выполнив $([System.Convert]::ToUInt16( theAboveExpression )).

Однако двойной может быть слишком большим, поэтому мне нужно сначала разделить его, и я не могу понять, как это сделать вообще. Моя лучшая попытка до сих пор сводится к слепому колебанию, так как я не могу найти никаких примеров этого:

$( $([System.DateTime]::Now.TimeOfDay.TotalSeconds) / 2 )

Это выражение не может быть оценено, как бы я это сделал sh это?

1 Ответ

1 голос
/ 06 февраля 2020

Конечно, вскоре после того, как я решил обратиться за помощью, я выяснил это ...

MSBuild включает Функции свойств MSBuild , которые можно использовать для разделения вещей и выполнения других операций. Вот пример рабочего кода, который делает так, как мне нужно:

<Version>
  $([System.DateTime]::Now.Month).
  $([System.DateTime]::Now.Day).
  $([System.DateTime]::Now.Year).
  $([System.Convert]::ToUInt16(
      $([MSBuild]::Divide(
          $([System.DateTime]::Now.TimeOfDay.TotalSeconds),
          2
      ))
  ))
</Version>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...