MSBuild wish list
After switching our build system from NAnt to MSBuild I thought it would be a good moment to make some suggestions, while the memories are still fresh.
I like MSBuild, I think it's better than NAnt, but there are some things that could be done better. What I'd like is:
1. Better documentation, in particular, better documentation of how to extend the existing system. MSBuild's strength is that Visual Studio creates build files for you (the project files) which you can then extend, but there is no real documentation of how to do this. There is a brief mention of overridable targets and 'dependson' properties, but nothing about the properties and items that are already defined, e.g. SolutionDir or MainAssembly, or the targets in Microsoft.Common.targets and how to extend them, e.g. the ResolveAssemblyReferences target. The only way to find these things out, atm, is to set verbosity to diagnostic and to trawl through Microsoft.Common.targets. I really think MSBuild\VS is wasting an opportunity here.
2. Make solution files MSBuild files. Every so often you need to add steps to a build on the solution level, that also need to run when building in VS, and you'd like to add targets to the solution file but you just can't. It's a real nuisance and makes MSBuild feel a bit half-baked.
3. Make C++ projects MSBuild files. Admittedly, they are not as common as C# or VB but in our projects they regularly do crop up. My solution of the problem currently involves calling MSBuild in the VCBuild pre- and post-build events and passing in parameters via environment variables. Only so I can reuse my MSBuild targets. Hardly ideal.
Otherwise, keep up the good work!
Tilman

