난 그 테스트 여부를 실행할지 여부를 .targets 안에 당신이 당신의 .csproj에 고정 가져 오기를 추가하고 결정하는 게 좋을 것 :
귀하의 .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)" />
...
복잡하게 만드는 문제는 우리가 만들거나 .csproj 파일을 유지하지 않는다는 것입니다; 고객이 사용할 수있는 새로운 테스트 유형의 VS 플러그인을 제공하고 있습니다. 우리는 테스트 중 하나가 포함되어 있지 않으면 고객의 .csproj 파일을 Imports로 압축하지 않으려 고합니다. 그것은 사용할 수있는 해결 방법이 될 수도 있습니다. 와일드 카드로 Exists 조건을 작성할 수 있습니까? 예 : 조건 = "있음 ('*. foo')" – Greg