views:

128

answers:

3

We have a large codebase in VS 2008. We have developers that need to rely on the VS IDE for day-to-day development. But we also have complicated dependencies and deployment steps and require an automated nightly build.

I am familiar with NAnt. It is perfect for our out-of-IDE build and deployment steps. Unfortunately, I haven't seen a nice way to integrate its build steps into the IDE. For instance, developers will want to be able to CTRL-SHIFT-B to build. I've seen steps to add NAnt as an external build tool but that doesn't allow the developer to double-click errors to jump to the source.

Is MSBuild good enough these days? Is there anything else? I can't believe we're the first to deal with complicated builds and picky developers.

EDIT: I see from this question and answers that MSBuild is probably going to be the way to go if I want full IDE integration. Any arguments against that?

+2  A: 

Ok I'm a bit biased but MSBuild is definetly the way to go. Currently MSBuild is used to build Visual Studio itself so it is capable. There will also be a new version of MSBuild with Visual Studio 2010 (actually .NET 4.0) that will have a bunch of enhancements including building C++ projects.

Sayed Ibrahim Hashimi
Very nice to hear that MSBuild will be able to build C++ projects.
Scott Dorman
Not exactly the discussion I had hoped. :/ But for now, I think it will do.
Jamie Hale
+1  A: 

MSBuild would be the way to go, so that you can manage dependency configuration in the VS solution and not the nant script. MSBuild will also run the pre and post build commands set in the VS project, however, some VS specific properties are not available. You can have Nant run MSBuild on the solution file.

I work on a project with somewhat complicated builds. We use Cruise Control for continous integration, which checks SVN for modifications and then calls an Nant script, which then calls MSBuild target. All the deployments are done from there. Developers can build and debug with no needed knowledge on how it is deployed, which makes bringing on new developers easy and for them to focus on development only and let the Release Manager manage builds and deployments.

Shawn
Interesting. To confirm, do I understand that you have CC run Nant which runs MSBuild on a solution (or solutions) which in turn manages project dependencies internally? If so, minus, this is pretty much exactly I had pictured.
Jamie Hale
That's correct, Jamie. This way, the developers have control on managing the dependencies and resources. If they can publish it, the build server can deploy it. The NAnt script would only need to change if another presentation layer application (i.e. a new console or web app) was added. For stuff like, adding in a new DLL resource in VS, CC builds as normal with the added resource with no changes to the current NAnt script.
Shawn
A: 

Have you tried NUBuild? It is highly suitable for doing "local builds" by developers. Moreover it will decrease build failure by letting developers catch them early on and not after it has been checked into the source control. Once it has been setup, it is as simple as executing a command in a batch file to build projects. Try it out -

http://nubuild.codeplex.com