Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

What build or deployment tools are available for a 1 person development effort, in the .NET space, that are capable of producing project outputs?

I'm not looking necessarily looking for a CI server (though I can't think of anything else that does what I'm looking for) but I am looking for it to:

  • produce and publish documentation from xml comments
  • produce and publish the project (web and/or clickonce app)
  • handle basic versioning (automatic build number incrementing)
  • work from a sln file
  • be easy to setup (< 8-16 hrs for someone who knows little to nothing about the tool(s))
  • do this at the push of a button (after configuration obviously)

Things I don't need:

  • source control integration : I can point it to a sln if need be. Not a huge deal.
  • unit testing : I run test suite before commits
  • static analysis : again, I also run these before commits

I know that msbuild is capable of most or all of this, and I do have my msbuild book(s) with me, but I'm still very new to it and I don't have the time at the moment to learn it well enough to do what I want.

share|improve this question
add comment

6 Answers

If you're looking for something simple, you might consider hudson. I haven't used it with .Net, but it's pretty useful if you just want to have a series of build jobs that only need to run a set of shell commands. It can be a bit simplistic if you get to the point where you have multiple packages with complex dependencies, but it sounds like it might be useful for the size of project you're doing.

EDIT: It turns out that there's an MSBuild plugin as well

share|improve this answer
    
+1 I've used Hudson on a lot of projects. Great tool with lots of plugin support...like this one: wiki.hudson-ci.org/display/HUDSON/ChuckNorris+Plugin –  Ryan Hayes Nov 3 '10 at 16:54
    
Hudson is awesome, much easier to configure and manage than others, its all web-based GUI which writes to xml files you can copy and paste. And it works, plus it has a great 'upgrade to next version but keep a one-click downgrade' feature. –  gbjbaanb Feb 4 '12 at 1:03
add comment

TeamCity is a CI server that does what you need (and a few other things too). Automatic assembly versioning requires some tricks (I can go into more details here if needed), but it will version build artifacts that it produces.

Setting it up is very easy and there is a free version that supports up to 20 build configurations, which should be sufficient for a single developer.

Edit: come to think of it, I'm not sure about setting up XML doc generation with TeamCity. But if it's something that can run as part of an MSBuild project, TeamCity will run it, I'm pretty sure.

share|improve this answer
    
Why the downvote? –  Anna Lear Nov 3 '10 at 17:28
    
No idea. I have used TeamCity before (and liked it). I don't recall it being able to generate documentation, but if it can then it might be what I'm looking for. –  Steve Evers Nov 3 '10 at 20:24
    
@SnOrfus: Apparently it can, with a bit of legwork. Here's a blog post I found on Sandcastle and TeamCity integration: navision-blog.de/2009/01/11/… –  Anna Lear Nov 3 '10 at 20:47
    
TeamCity can run anything you need on the command-line with the CommandLine build runner. You can now chain together many different build runners, making TeamCity my choice for personal projects. –  Jeff Fritz Mar 2 '11 at 0:01
add comment

I don't have a comprehensive answer to all of your points, but I can point you to a software that I found extremely useful. It's called CruiseControl.Net

Google it and check it out :D

share|improve this answer
1  
I thought cc.net had it's day and was abandoned? I took a look at it two years ago, and iirc, it was a pain to setup (the config files were terrible) and hadn't been maintained for a while even at that time. –  Steve Evers Nov 3 '10 at 15:46
2  
No, CC.NET is still going strong - last release was 1.5 in May. I think it did go quiet for a while but it's picked up again. –  JohnL Nov 3 '10 at 15:59
    
@JohnL @Matteo Mosca: I'll definitely take another look at it again then. –  Steve Evers Nov 3 '10 at 16:24
    
It deserves your attention, really. It's a time saver, and a life saver in certain cases. I know that configuring all the xml by hand may seem a bit of a pain, but the docs are extremely well written and once you get the hang of it, it really really pays off. –  Matteo Mosca Nov 3 '10 at 16:30
add comment

A 1-dev project could do all this within Visual Studio, since it has builtin tools to do all of this. If you want script it though, then the tools you want to look at are:

  • produce and publish documentation from xml comments produce and publish

Sandcastle: http://broadcast.oreilly.com/2010/09/build-html-documentation-for-y.html, http://sandcastle.codeplex.com/

  • the project (web and/or clickonce app)

http://codingcockerel.co.uk/2008/05/18/how-to-publish-a-web-site-with-msbuild/, or calling the Publish target on the solution

  • handle basic versioning (automatic build number incrementing)

AssemblyInfo task from http://msbuildtasks.tigris.org. This won't automatically increment the version because that would mean tracking the version number each time. You can have something like CruiseControl.NET pass one in, or you can generate one based on the date and time using the Time task (as an example).

  • work from a sln file

MSBuild will use a .sln as a project file. If you want to wrap your .sln with another MSBuild script, you can use the MSBuild task

share|improve this answer
    
+1: This is basically what I do now. I'd like something that ties it all together though. If it means that I must write an msbuild script to make it happen, then I guess that's what I'll have to do. –  Steve Evers Nov 3 '10 at 15:51
    
There are other build scripting systems that work with .NET, for example NAnt, which rocks but was last updated in the stone age. Or just a batch file will do. It depends why you want to move out of the IDE, or is it just that you're tired of clicking Build then Publish? BTW, I edited my answer because the formatting went nuts –  JohnL Nov 3 '10 at 16:01
add comment

Check out Sandcastle and Sandcastle Help File Builder for compiling your XML docs. It works pretty well, but the documentation isn't so hot.

http://sandcastle.codeplex.com/

http://shfb.codeplex.com/

share|improve this answer
    
That's what I use now. I assume/hope that if I go with a CI tool that doesn't already perform this function that I can run sandcastle from it as part of the build/deployment process. –  Steve Evers Nov 3 '10 at 15:47
    
SandcastleBuilderConsole.exe MyProjectHelp.shfb should build the doc if you have the SHFB GUI; any batch or build script can call it. –  Michael K Nov 3 '10 at 15:59
add comment

While waiting for answers, I got looking around and stumbled upon MSBuild Explorer and think that, in combination with the MSBuild Extension Pack, the 'favorites' feature might be what I'm looking for.

I'm not going to mark this as the answer yet, because I have to try it out to see if it can do what I'm looking for. Feedback is appreciated if anyone else has used this before.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.