I think you are a little confused by what the <Output> element is doing - it will create a property with the name in the PropertyName attribute and set the value of this property as the value of the Id output from the BuildStep task. You do not affect the Id value - you just save it in a property for later reference to set the status of the assembly phase
With that in mind, I donβt understand why you are worried that the created property will have a name that will include the extension concatenation. While the property name is unique, you can refer to it later in the next BuildStep task, and I assume that your testuite file name is enough to indicate uniqueness.
In fact, you could avoid creating unique properties that track each pair of testsuite / buildstep if you made targeted subsidies:
<Target Name="Build" Inputs="@(TestSuite)" Outputs="%(Identity).Dummy"> <BuildStep TeamFoundationServerUrl="$(TeamFoundationServerUrl)" BuildUri="$(BuildUri)" Name="RunUnitTestsStep-%(TestSuite.Filename)-%(TestSuite.Extension)" Message=" - Unit Tests: %(TestSuite.Filename): %(TestSuite.Extension)"> <Output TaskParameter="Id" PropertyName="TestStepId" /> </BuildStep> <BuildStep Condition=" Evaluate Success Condition Here " TeamFoundationServerUrl="$(TeamFoundationServerUrl)" BuildUri="$(BuildUri)" Id="$(TestStepId)" Status="Succeeded" /> <BuildStep Condition=" Evaluate Failed Condition Here " TeamFoundationServerUrl="$(TeamFoundationServerUrl)" BuildUri="$(BuildUri)" Id="$(TestStepId)" Status="Failed" /> </Target>
Peter McEvoy
source share