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 パラメーターの Output タスクを使用して、ビルドされた dll をキャプチャしています。問題は、プロジェクトの 1 つが、実際に xunit を実行したくない dll を出力するタスクを呼び出していることです。

奇妙なのは、Remove="*.Example.dll"がまったく影響を与えていないように見え、xunit がとにかくアセンブリをテストしようとしているということです。

なぜ機能しないのRemoveですか?

4

1 に答える 1

0

実際、私はそれを理解したと思います。問題は、ターゲット内のアイテムグループとターゲット外のアイテムグループで相対パスが解決される方法にあるようです。私は自分の道をもう少し明確にする必要があり、そうすればうまくいきます。基本的に私はそれを機能させるためにこれを行いました:

<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 に答える