MSBuild 3.5 "Orcas" has now shipped

 MSBuild 3.5 “Orcas” has now shipped. You can get the free download from here. It’s included in the free Express Editions and of course Visual Studio 2008 itself.

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] 


Comments (6)

  1. kingbing says:

    How have you built the native projects with msbuild? I thought VC++ still didn’t support msbuild…



  2. steve says:

    — Ability to remove items from lists and modify item metadata during the build — no more "sloshing" into another list

    I recently wanted to do something like this from with a task; i.e. make a task which would add some additional metadata to an array of ITaskItem’s.

    However ITaskItem’s appear to be local to tasks, as even though the new metadata was present in the task which added it, the subsequent task in the chain had a vanilla copy of the original ITaskItem list.

    So in the new release of msbuild is it actually possible to create a task like this, or will I still have to create multiple lists to achieve what I want?

    Thanks 🙂

  3. Lars says:

    Where can i download MSBuild 3.5 directly?

  4. Hi

    It doesn’t seem the documentation reflects that ItemGroup elements can be inside Target elements now. Is this going to be remedied? This also makes me wonder how many other MSBuild 3.5 features are undocumented.


  5. 几米距离 says:

    Hi All,

    I am using VS 2008 (SP1), and I am using the following to do the build.

    @devenv /useenv Solution.sln

    In my Solution.sln, there are several VC++ projects.

    I there a easy way to migrate to using MSBuild?