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

Man*_*que 7 msbuild visual-studio

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

<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>
Run Code Online (Sandbox Code Playgroud)

但我发现在这些条件下似乎不可能有两个具有相同名称的目标正常工作.一个人会否定另一个人.我怎样才能做到这一点?

Chr*_*n.K 15

提供一个包装器目标,它取决于两个目标.两者都将被调用,但只有匹配条件的那个才能实际执行某些操作.

<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>
Run Code Online (Sandbox Code Playgroud)