Я бы посоветовал вам добавить фиксированный импорт в ваш .csproj и решить внутри этого .targets, выполнять тесты или нет:
Ваш .csproj
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="CustomTest.targets" Condition="Exists('CustomTest.targets')" />
Обратите внимание на Condition
, чтобы проверить, доступны ли .targets.
Ваши CustomTest.targets
Определите, какие тесты нужно запустить, установив соответствующие условия.
<Project DefaultTargets="RunTests" xmlns="...">
<ItemGroup>
<MyCustomTests Include="Test_A" Condition="Exists('Test_A.cs')" />
<MyCustomTests Include="Test_B" Condition="Exists('Test_B.cs')" />
</ItemGroup>
<Target Name="RunTests" Condition="@(MyCustomTests)!=''">
<Message Text="Running Test %(MyCustomTests.Identity)" />
</Target>
</Project>
Вы даже можете расширить свой элемент MyCustomTests с помощью некоторых метаданных, которые могут вам понадобиться для выполнения теста:
...
<ItemGroup>
<MyCustomTests Include="Test_A" Condition="Exists('Test_A.cs')">
<TestType>Boundary</TestType>
</MyCustomTests>
<MyCustomTests Include="Test_B" Condition="Exists('Test_B.cs')">
<TestType>SQLInjection</TestType>
</MyCustomTests>
</ItemGroup>
...
<Message Text="Running %(MyCustomTests.TestType) Test %(MyCustomTests.Identity)" />
...