0

我有一些看起来像这样的 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 参数上的输出任务来捕获构建的 dll。问题是其中一个项目正在调用一个任务,该任务输出一些我不想实际运行 xunit 的 dll。

奇怪的是,Remove="*.Example.dll"似乎根本没有任何影响,而 xunit 无论如何都在尝试测试程序集。

为什么Remove不工作?

4

1 回答 1

0

其实我想我想通了。似乎问题在于相对路径在目标中的 ItemGroups 与目标之外的解析方式。我需要对我的路径更明确一点,然后它才能工作。基本上我这样做是为了让它工作:

<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>
于 2012-05-17T23:30:04.217 回答