Для дозирования вашего @(UnitTestProjects)
вашего объекта будет использовать его как это:
<Target Name="Coverage">
<NCover TestRunnerExe="C:\Program Files\NUnit 2.5.8\bin\net-2.0\nunit-console.exe"
TestRunnerArgs=""%(UnitTestProjects.Identity)" "%(UnitTestProjects.Identity)""
<!--
If you receive the Task Output (*Test.dll) you will have to extract
the working dir path
-->
WorkingDirectory="C:\SomeProject\bin\"
AppendTrendTo="coverage.trend"
OnlyAssembliesWithSource="True"
<!--
... the same thing applies to finding out the current project name
from your Task Ouput.
-->
ProjectName="SomeProjectCoverage" />
</Target>
Более надежное решение было бы, чтобы предоставить список TaskItems, придерживая метаданные о вашем проекте (Test).
<ItemGroup>
<TestProject Include="MyProject1.Test.dll">
<TestProjectName>MyProject1</TestProjectName>
<MyTestProjectWorkingDir>C:\MyProject1\bin</MyTestProjectWorkingDir>
</TestProject>
<TestProject Include="MyProject2.Test.dll">
<TestProjectName>MyProject2</TestProjectName>
<MyTestProjectWorkingDir>C:\MyProject2\bin</MyTestProjectWorkingDir>
</TestProject>
</ItemGroup>
<Target Name="Coverage">
<NCover TestRunnerExe="C:\Program Files\NUnit 2.5.8\bin\net-2.0\nunit-console.exe"
TestRunnerArgs=""%(TestProject.Identity)" "%(TestProject.Identity)""
WorkingDirectory="%(TestProject.MyTestProjectWorkingDir)"
AppendTrendTo="coverage.trend"
OnlyAssembliesWithSource="True"
ProjectName="%(TestProject.MyTestProjectName)" />
</Target>
Ваш вопрос предполагает, что вы ищете автоматизированный подход, который позволит вам добавить новые тестовые проекты без необходимости поддерживать список конфигурации TaskItems.
Поскольку было бы довольно сложно извлечь всю информацию, необходимую для подачи вашей задачи NCover, возможно, для вас может работать полуавтоматический подход.
Вы можете добавить импорт на тестовый проект, который будет кормить свой глобальный тест проекта ItemGroup:
<ItemGroup>
<!-- add existing ItemGroup -->
<TestProject Include="@(TestProject)" />
<!-- add project itself -->
<TestProject Include="MyProject1.Test.dll">
<TestProjectName>MyProject1</TestProjectName>
<MyTestProjectWorkingDir>C:\MyProject1\bin</MyTestProjectWorkingDir>
</TestProject>
</ItemGroup>
Использование в вашей NCover задача будет такой же, как указано выше.
Таким образом, ваш мастер-скрипт не должен знать о каком-либо конкретном тестовом проекте; он просто обрабатывает ваш ItemGroup «TestProject».
Hi Filburt. Я ищу ответы на вопросы о передаче коллекции единичных тестовых проектов в NCover. – Fenton
@Sohnee См. Мой обновленный ответ с фактическим примером вашей задачи NCover и, возможно, более практичным решением. – Filburt
Hi Filburt - спасибо за обновление ответа - выглядит гадонь больше как то, что мне нужно. Я дам ему вращение. – Fenton