MSBuild:如何有条件地使用同名的两个目标之一?

MSBuild: How to conditionally use one of two targets with same name?

我看到了类似问题的一些答案,但不完全相同,而且尝试使用建议的解决方案时运气不佳......所以我正在尝试这样的事情:

<project>
    <target name="foo" Condition="'$(Configuration)' == 'Debug' ">
        <Message Text="=== RUNNING FOO DEBUG TARGET ===" />
    </target>
    <target name="foo" Condition="'$(Configuration)' == 'Release' ">
        <Message Text="=== RUNNING FOO RELEASE TARGET ===" />
    </target>
</project>

...但我发现在这些条件下似乎不可能有两个同名的目标正常工作。一个会否定另一个。

我该怎么做?

提供一个依赖于两个目标的包装器目标。 两者都将被调用,但只有与 条件实际上会做一些事情。

<Project>
    <Target Name="foo" DependsOnTargets="_fooDebug;_fooRelease"/>

    <Target Name="_fooDebug" Condition="'$(Configuration)' == 'Debug' ">
        <Message Text="=== RUNNING FOO DEBUG TARGET ===" />
    </Target>
    <Target Name="_fooRelease" Condition="'$(Configuration)' == 'Release' ">
        <Message Text="=== RUNNING FOO RELEASE TARGET ===" />
    </Target>
</Project>