I'm in the process of setting up a project's development environment from scratch. My company has used various technologies, but this is the first time we're able to focus on the development environment for a .NET project from the ground up -- and I'm the lucky guy who gets to make it work.
I'm actually very excited to do this, as it has the potential to become a pattern for repeated success across multiple projects.
I'd like your help to assess the build process that I'm using and shout out where I may find myself running into issues.
So, here goes--
- Windows Server 2008
- SQL Server 2008 (relatively small / low traffic DB, wasn't worth devoting a separate VM in dev)
- VisualSVN for hosting source code (just easier to manage on Windows), [*]Trac hooked into VisualSVN for wiki/bugs/tracking
- NAnt for automatic builds / running unit tests
- FxCop (potentially) as another set of tests from CruiseControl to check framework best practices
- CruiseControl.NET for continuous integration, to automatically call the NAnt build and run NUnit / FxCop tests when new source is committed.
Dev Machines / Tools:
- VS 2010
- CSLA (potentially) to use in developing our business logic layer
- NHibernate or Entity Framework (potentially) help facilitate OR/M
That's what I've got so far -- thoughts?
Thanks in advance for any insight you can offer!
No problem, I understand the reality constraints. Your initial list definitely wasn't bad. Frankly, its a better setup than many shops who paid $$$$ have.
Hosting-wise, I definitely wouldn't want development/qa sharing with SBS for a few reasons. Security-wise, storing code under test and sensitive data [email, calendar, files] is a big no-no. Uptime-wise, having code under test running with business critical things isn't the best idea either. That presumes the box is actually in production for those uses or that SBS is part of the application.
Also, to save a few bucks on resharper, check out Visual Nunit 2010. Being able to run/debug tests from the tool you are in helps smooth the TDD process alot IMHO. Resharper is awesome for other reasons.
As for team city, the Professional [free] one gives you lots of projects, especially considering archiving capabilities. It wants some SQL space, but it can be run on say, a decomissioned workstation, as it is a java/tomcat app with no IIS dependencies.
Hope this helps.
@wwb_99, thanks for the great feedback! All good suggestions; I'd like to respond to shed some more light.
As far as some of the other products, for the dev tools, etc. I should note that I was trying to keep it on the free side of things. I knew I'd have to sink cost into server/db tech for .NET app and wanted to that part right, but wanted to keep the tools free and available (also, to potentially help structure a build guide for devs getting started who don't want to kill their wallets).
I'd go R2 here unless you have a hard 32-bit dependency
Unfortunately, we do -- at least temporarily. The host box is on Small Business Server 2003 and for some reason it does not play nicely with R2. I'm working on that though. For now we're stuck with the host box on SBS 2k3 due to licensing.
if SQL is on a separate box, then you should make the QA SQL on a separate VM
A great point -- hadn't thought about that. A separate VM is definitely a much better idea in this case; I'll have to bring that up and procure the licensing.
I think MsBuild is perhaps better choice (no 3rd party dependencies, can do most things NAnt does, just as much obtuse XML to write)
I'll check this out as well -- as long as it can help automate the build process, I'm game for learning it.
TeamCity over CCNET. It is so, so much better on so many levels.
I just took a look and all I can say is, wow. I'll definitely be checking this one out. Thanks for bringing it to my attention! It's not fully free like CruiseControl is, but I'm checking it out anyway.
VisualSVN is a solid choice, but if I were starting clean today, I'd consider more modern SCM systems -- SVN is great but is largely rooted in the thinking of the last century.
I'm familiar with Mercurial and Git, but for a new dev team getting up and running quickly on free software, VisualSVN is hard to beat, and svn concepts / principles are pretty widely disseminated at this point.
Thanks again for all your great help, as is par for the course with you.
Very interesting topic, and you could definitely get 'er done with what you list. I'd look at some slightly different tools:
* Windows Server 2008
I'd go R2 here unless you have a hard 32-bit dependency
* SQL Server 2008 (relatively small / low traffic DB, wasn't worth devoting a separate VM in dev)
For development purposes, I generally use SQL Express of the same version as the app will run on. For QA purposes, I try and make sure the environment matches largely. IE, if SQL is on a separate box, then you should make the QA SQL on a separate VM. There are bugs [configuration issues mainly] that don't expose themselves until talking across the wire. DTC, I am looking at you.
* VisualSVN for hosting source code (just easier to manage on Windows),
VisualSVN is a solid choice, but if I were starting clean today, I'd consider more modern SCM systems -- SVN is great but is largely rooted in the thinking of the last century. Which is a really long-winded way of saying check out Mercurial or Git. Mercurial is actually not too hard to get running on Windows and IIS7. And the client support is better than Git. Now, I would take a long look at Git, especially if I was a small shop looking at cloudsourcing my infrastructure.
* Trac hooked into VisualSVN for wiki/bugs/tracking
Decent enough choice, though I would note everyone I know who uses it hates it. Then again, find a bug tracker a developer likes these days . . .
* NAnt for automatic builds / running unit tests
NAnt doesn't really automate anything, it lets you automate stuff. Anyhow, its a good choice, but I think MsBuild is perhaps better choice (no 3rd party dependencies, can do most things NAnt does, just as much obtuse XML to write). And some of the newer, powershell based build tools might be even better in a future looking sort of way.
* FxCop (potentially) as another set of tests from CruiseControl to check framework best practices
Not a bad idea.
* CruiseControl.NET for continuous integration, to automatically call the NAnt build and run NUnit / FxCop tests when new source is committed.
I'd really take a hard look at TeamCity over CCNET. It is so, so much better on so many levels. Setup and configuration is measured in minutes, not days. New project setup measured in minutes, not hours. Very little care and feeding required overall. Bonus of being readable enough to show to management. Nevermind the Visual Studio, pre-tested commit plugin.
* VS 2010
* CSLA (potentially) to use in developing our business logic layer
* NHibernate or Entity Framework (potentially) help facilitate OR/M
This list pretty much makes sense. These days, with code-first EF and fluent NH, you can ditch CSLA.
I'd add Resharper or TestDriven.NET if you want to use NUnit tests from within Visual Studio. Resharper has lots of added benefits beyond test running.
Hope this helps.
I would also suggest Resharper, it is a great tool and I can not imagine working without it again.
One thing I can meantion is, it would be best to keep your dev enviroment as close as possible to your live servers. Windows 2008 IIS 7 to Windows 2003 IIS 6 might cause some problems if you are not familiar with it and its options of running in intergrated or classic pipeline
I can offer one piece of advice: Your going to want to install .NET 4.0 and VS before SQL Server. I tried the other way around and ran into problems.