MSBuild, 環境変数, Property Functions,ビルド時計算

Visual StudioからBuildしたときに環境変数が取得できない…

MSBuild Extension PackにEnvironmentVariableタスクがあるけれど、標準でついてないなんてありえません。プロパティ式に組み込んでもいいくらいなのに。

$(env:DXSDK_DIR)

みたいな感じで

んー,手元の Visual Studio 2008 でも Visual Studio 2010 でも,$(DXSDK_DIR) で環境変数を取得できているような……
$(PROCESSOR_REVISION) とか,$(OS) とか色々試してみましたが,こちらも特に問題なく取得できました.



というわけで,そもそも何が問題なのか今ひとつよく分からないのですが,MSBuild 4.0 以降では,Property Functions を使って明示的に書くこともできます.

$([System.Environment]::GetEnvironmentVariable("DXSDK_DIR"))

こんな感じで,いくつかの事前定義された .NET クラスライブラリを使用できるようになるわけですね.例えば System.Math を呼び出してビルド時に三角関数を計算,なんてのも可能です.