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