In Target Dependencies in MSBuild vs. Ant I claim that Ant's model was more powerful than the file name based approach taken by make and MSBuild's target inputs/outputs dependencies.

Let me give some reasons:

Like I previously said, you can create smart tasks in MSBuild as well. But if you start out with the target input/output checking in your build file, switching to smarter tasks may become a steep learning curve. You may even have to implement them yourself when the shipped tasks are not smart enough.

path: /en/dotNet/msbuild | #

John Lam doesn't like my usage of property files at the bottom of Conditions in MSBuild vs. Ant.

Well, I could have used

<xmlproperty file="${config}.xml" keepRoot="false"/>
instead. And what used to be
Optimze=false
OutputPath=bin\\Debug\\
WarningLevel=1
in DEBUG.properties would become
<root>
  <Optimze>false</Optimize>
  <OutputPath>bin\Debug\</OutputPath>
  <WarningLevel>1</WarningLevel>
</root>
in DEBUG.xml.

Better?

path: /en/Apache/Ant | #