Dependency Management Tool for Component based C# developed code base.
-
I'm hoping I have the correct forum here for a start. :-D I'm upgrading the Continuous Integration server and build process for our C# codebase. The code is component based, with over 150 components, with lots of interdependencies. We're currently building under CruiseControl, calling some NAnt scripts to build "everything" several times a day. The NAnt scripts end up calling MSBuild on the solution files for each component. I have written some NAnt tasks to iterate through the components parsing solution and CS project files to get output assemblies and their references, so that I can order the component builds based on dependencies. This code has also been 'reused' to produce a component catalog, which details the version of the assemblies/compoents used by each of our products. So this needs to be maintained. I'm considering several CI servers for the upgrade: UrbanBuild and OpenMake meister both claim to have dependency management handling for component based systems, but I need to actually talk to someone from each of these companies to get a price out of them. TeamCity appears to have plugins/extensions for NAnt and AccuRev (I'm not really considering changing SCM if I can avoid it), but I haven't seen any mention of dependency management. Team Foundation Server doesn't appear to support AccuRev or NAnt from what I can find, so I've kinda ruled it out at this stage. If I do go for TeamCity, then I've had a brief look at NuGet and OpenWrap for dependency management, however OpenWrap appears to bypass msbuild, which probably rules out most of my NAnt scripts also, and they both appear to focus on 3rd Party dependency management. So is anyone aware of a tool which will analyse inter-component dependencies in my code, and output some form of data that I could use to: 1. schedule the component builds from the bottom up, from the middle up or from the top down and 2. from which I could produce my component catalog and 3. could support plugin dependencies which don't use assembly references in the project files? Does anyone know if either UrbanBuild or OpenMake Meister support this? The sites for both of these products talk a good talk but don't flesh out the details to the extent I would like. I've been googling this stuff on and off for a couple of weeks and I'm sure there has to be something out there that does what I'm looking for, but it doesn't seem to be making itself known to me.
Pete