我有一些看起来像这样的msbuild代码:
<Target Name="Build">
<MSBuild
Projects="@(UnitTestProject)"
Properties="$(BuildProperties)">
<Output TaskParameter="TargetOutputs" ItemName="TestAssembly" />
</MSBuild>
</Target>
<Target Name="Test" DependsOnTargets="Build">
<ItemGroup>
<TestAssembly Remove="*.Example.dll" />
</ItemGroup>
<xunit Assemblies="@(TestAssembly)" />
</Target>
因此,我正在构建所有单元测试项目,并使用TargetOutputs参数上的Output任务捕获已构建的dll。问题是其中一个项目正在调用一个输出一些dll的任务,我不想实际运行xunit。
奇怪的是,Remove="*.Example.dll"
似乎根本没有任何影响,xunit正试图测试装配。
为什么Remove
无效?
答案 0 :(得分:0)
其实我觉得我弄明白了。似乎问题在于Target中的ItemGroups与Target外部的相对路径的解析方式。我需要对我的路径更加明确,然后它才有效。基本上我这样做是为了让它起作用:
<Target Name="Build">
<MSBuild
Projects="@(UnitTestProject)"
Properties="$(BuildProperties)">
<Output TaskParameter="TargetOutputs" ItemName="UnitTestOutput" />
</MSBuild>
<ItemGroup>
<TestAssembly Include="@(UnitTestOutput)" Exclude="$(RootTestPath)\**\*.Example.dll" />
</Target>
<Target Name="Test" DependsOnTargets="Build">
<xunit Assemblies="@(TestAssembly)" />
</Target>