Msbuild现在有条件地使用具有相同名称的两个目标之一

时间:2015-06-18 00:41:21

标签: visual-studio msbuild

我已经看到了类似问题的一些答案,但并不完全相同,并没有尝试使用建议的解决方案的积极运气......所以我尝试这样的事情:

<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>

但我发现在这些条件下,两个具有相同名称的目标似乎无法正常工作。一个人会否定另一个人。 我怎么能这样做?

1 个答案:

答案 0 :(得分:13)

提供一个包装器目标,它取决于两个目标。 两者都将被调用,但只有一个匹配 条件实际上会做点什么。

<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>