我有以下虚拟构建脚本文件:
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消息?
答案 0 :(得分:1)
如果未在命令行上指定目标且未指定DefaultTarget,则msbuild将执行它看到的第一个目标,在这种情况下为TargetA。如果您切换TargetA和TargetB,您将看到TargetB首先被执行。如果删除导入并使EntryPointTarget不依赖于任何其他目标,则将执行EntryPointTarget。显然,这些都没有适当的修复,所以:
DefaultTargets=EntryPointTarget
Project
属性添加到msbuild EntryPoint.proj
标记来确定执行的内容,然后您只需调用Runnable
即可执行EntryPoint。