I was looking for a build system similar to maven for .Net. A standard tool for building project is MSBuild which is heavily influenced by Ant. While it is  easy to create build scripts for small project, it does not manage the packages as effectively as maven.

 

Today I came over Horn. It was inspired by both Maven and portage (build system of Gentoo linux). This is an example of a build script:

 

 

   1: install cap:
   2:     description "The Capgemini Belgian .NET framework"
   3:     get_from svn("https://scm-coconet.capgemini.com/svn/repos/belgianadf")
   4:     build_with msbuild, buildfile("Capgemini.Adf/trunk/Capgemini.Adf.sln"), FrameworkVersion35                
   5:  
   6:     with:
   7:         tasks clean,release,platformNet35
   8:  
   9:     shared_library "Capgemini.Adf/trunk/References"
  10:     build_root_dir "bin/net-3.5/release"        
  11:     
  12: dependencies:
  13:     depend "castle.tools"        >> "Castle.Core"    
  14:     depend "castle.tools"         >> "Castle.DynamicProxy2"
  15:     depend "castle.windsor"      >> "Castle.MicroKernel"
  16:     depend "castle.windsor"      >> "Castle.Windsor"    
  17:     depend "nhibernate"             >> "2.1" >> "NHibernate"     
  18:     depend "nhibernate"             >> "2.1" >> "NHibernate.ByteCode.Castle"
  19:     depend "nhibernate"          >> "2.1" >> "Iesi.Collections"
  20:     depend "nhibernate.caches"   >> "NHibernate.Caches.SysCache"
  21:     depend "fluentnhibernate"    >> "FluentNHibernate"
  22:     depend @log4net              >> "1.2.10" >>  "log4net"    
  23:     depend "automapper"             >> "AutoMapper"
  24:     depend "moq"                >> "Moq"

 

 

As you see, it's very declarative. The versions of the packages are defined clearly, and are can be easily managed from one place.

 

Read more about this promising framework here: http://thesoftwaresimpleton.blogspot.com/2009/03/horn-package-management-system.html