MSBuild不显示条目目标消息

时间:2017-03-30 08:13:28

标签: msbuild

我有以下虚拟构建脚本文件:

Common.targets

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">   

    <Target Name="TargetA">
        <Message Text="This is TargetA"/>
    </Target>
    <Target Name="TargetB">
        <Message Text="This is TargetB"/>
    </Target>

</Project>

EntryPoint.proj

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">

    <Import Project="Common.targets"/>

    <Target Name="EntryPointTarget" DependsOnTargets="TargetA">
        <!--But why this message is not shown during build?-->
        <Message Text="This is Entry Point Target"/>
    </Target>
</Project>

为什么在构建期间不显示EntryPointTarget消息?

enter image description here

1 个答案:

答案 0 :(得分:1)

如果未在命令行上指定目标且未指定DefaultTarget,则msbuild将执行它看到的第一个目标,在这种情况下为TargetA。如果您切换TargetA和TargetB,您将看到TargetB首先被执行。如果删除导入并使EntryPointTarget不依赖于任何其他目标,则将执行EntryPointTarget。显然,这些都没有适当的修复,所以:

  • 明确指定目标DefaultTargets=EntryPointTarget
  • 通过将Project属性添加到msbuild EntryPoint.proj标记来确定执行的内容,然后您只需调用Runnable即可执行EntryPoint。