How can I get MSBuild to evaluate and print in a task an absolute path given a relative path?
Property Group
MSBuild 4.0 added Property Functions which allow you to call into static functions in some of the .net system dlls. A really nice thing about Property Functions is that they will evaluate out side of a target.
To evaluate a full path you can use System.IO.Path.GetFullPath when defining a property like so:
$([System.IO.Path]::GetFullPath('..\..\..\Public\Server\'))
The syntax is a little ugly but very powerful.