Я думаю, вы немного озадачены тем, что здесь делает элемент <Output>
- он создаст свойство с именем в значении атрибута PropertyName и установит значение этого свойства какзначение Id , выводимого из задачи BuildStep.Вы не можете влиять на значение Id - вы просто сохраняете его в свойстве для дальнейшего использования, чтобы установить статус шага сборки
. Учитывая это, я не могу понять, почему вы обеспокоенычто созданное свойство будет иметь имя, которое будет включать конкатенацию расширения.Пока имя свойства уникально, вы можете ссылаться на него позже в последующей задаче BuildStep, и я предполагаю, что вашего имени файла testsuite достаточно, чтобы указать уникальность.
Фактически, вы можете избежать создания уникальных свойств, которыеОтслеживайте каждую пару тестов / buildstep, если вы выполнили пакетное задание:
<Target Name="Build"
Inputs="@(TestSuite)"
Outputs="%(Identity).Dummy">
<!--
Note that even though it looks like we have the entire TestSuite itemgroup here,
We will only have ONE - ie we will execute this target *foreach* item in the group
See http://beaucrawford.net/post/MSBuild-Batching.aspx
-->
<BuildStep
TeamFoundationServerUrl="$(TeamFoundationServerUrl)"
BuildUri="$(BuildUri)"
Name="RunUnitTestsStep-%(TestSuite.Filename)-%(TestSuite.Extension)"
Message=" - Unit Tests: %(TestSuite.Filename): %(TestSuite.Extension)">
<Output
TaskParameter="Id"
PropertyName="TestStepId" />
</BuildStep>
<!--
..Do some stuff here..
-->
<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>