MSBuild 4 からは、プロパティで関数が呼べます

知りませんでした…
いつの間にかプロパティ関数という物が追加されています。
プロパティ関数
基本的なデータ型(数値や文字列、日付) や、型変換(System.Convert)、パス(System.IO.Path)、正規表現(System.Text.RegularExpressions.Regex) 等の static メソッド/プロパティがサポートされているようです。
また、環境情報(System.Environment)、ディレクトリ/ファイル(System.IO.Directory/File) の一部の static メソッド/プロパティもサポートされています。


例えばシステム日付を取得しようとすると、
以前ならシステム日付を取得するタスクを呼び出し、その値をプロパティに設定する必要がありました。
しかし、MSBuild 4 からはプロパティに直接設定する事が出来ます。

以前なら

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTarget="DisplayToday" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <!-- MSBuildCommunityTasks の Time タスクを利用するための設定 -->
  <UsingTask AssemblyFile="MSBuild.Community.Tasks.dll" TaskName="Time" />
  <Target Name="DisplayToday">
    <Time Format="yyyy/MM/dd HH:mm:ss">
      <Output TaskParameter="FormattedTime" PropertyName="Today" />
    </Time>
    <Message Text="$(Today)" />
  </Target>
</Project>

MSBuild 4 からは

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTarget="DisplayToday" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Today>$([System.DateTime]::Now.ToString("yyyy/MM/dd HH:mm:ss"))</Today>  
  </PropertyGroup>
  <Target Name="DisplayToday">
    <Message Text="$(Today)" />
  </Target>
</Project>

便利になってきていますね!