title: Use $(SolutionName) in the MsBuild commandline parameters
body: <p>In order to emulate the "PerProject" option in TFS 2013's XAML build in the new Build 2015 task based builds, I'd like to be able to pass the SolutionName to the msbuild commandline arguments without having to manually set it every time.</p>
  
  <p>I'd like to do something like:</p>
  
  <pre><code>/p:OutputPath=$(Build.BinariesDirectory)\$(SolutionName)\
  </code></pre>
  
  <p>Where I'd like MsBuild to infer the $(SolutionName) parameter. But when passing this on the commandline, the new task runner will substitute the <code>$(Build.BinariesDirectory)</code> with the correct target path and leaves <code>$(SolutionName)</code> alone. Unfortunately MsBuild subsequently also leaves the property alone:</p>
  
  <pre><code>Copying file from "obj\Debug\TFSBuild.exe" to "bin\debug\$(SolutionName)\TFSBuild.exe".
  TFSBuild -&gt; b\$(SolutionName)\TFSBuild.exe
  Copying file from "obj\Debug\TFSBuild.pdb" to "b\$(SolutionName)\TFSBuild.pdb".
  </code></pre>
  
  <p>I can't remember a way to pass a property to the commandline and have it do late-expansion... Any tips?</p>
  
  <p>For those looking to emulate <code>SingleFolder</code> or <code>AsConfigured</code>, those are easy:</p>
  
  <pre><code>SingleFolder -&gt; /p:OutputPath="$(Build.BinariesDirectory)"
  Asconfigured -&gt; don't pass OutputPath
  PerProject   -&gt; /p:OutputPath="$(Build.BinariesDirectory)\HARDCODESOLUTIONNAME"
  </code></pre>