I’ll blog about what’s new in MSBuild 3.5 in due course, but the main features are:
— Multiprocessor support — currently command line only, just build your solutions with /m switch. Includes a new improved console logger optimized for multiproc builds
— Multitargeting support — use MSBuild 3.5 to build projects targeting .NET 2.0 if you wish; mix targets within a tree or solution
— Performance improvements. Your should see improvements in full builds, but most especially in incremental builds. We have seen some larger incremental build scenarios double in speed. On Vista, we see even bigger improvements, due to SuperFetch. This is all without even enabling multiproc!
A couple of more minor features
— ItemDefinitionGroups — “types” for items.
— PropertyGroup/ItemGroup inside targets just like outside — no more unreadable CreateItem/CreateProperty
— Ability to remove items from lists and modify item metadata during the build — no more “sloshing” into another list
And of course hundreds of bug fixes — including especially the “generate resource locking” problem.
Also new since 2.0 was released — MSBuild now builds all of Visual Studio itself. This involved converting thousands of projects, mostly native code: helping us learn about supporting huge trees, and trialling native-code build support for future release.
I’ll have to blog about all of these individually, but for now — I’m proud of what my team did — go try it out.
PS Installation is side-by-side with .NET 2.0, so you should be able to install 3.5 without breaking any 2.0 apps or affecting VS2005 at all. However there is one caveat you should be aware of — .NET 3.5 installs .NET 2.0 SP1, and this adds some new types to 2.0 assemblies. The means you should be aware that it is possible your app built on a machine with 2.0 SP1 installed and using the new types may not work on a machine without SP1. I’ve blogged about how to deal with this.
[edit: fixed font]
[edit: fixed font]