Search code examples
asp.netasp.net-mvc-3version-controldeploymentmsdeploy

Looking for a good web application deployment strategy (ASP.NET MVC3)


I’m looking for a good deployment strategy for deploying a ASP.NET MVC3 application. What I imagine is that each deployment would be some kind of commit to a Source Management System in the sense that a deployment tool could automatically do the following:

1) Upon generating a deployment package (a commit) the tool would remember the state of my Web.Config file, the state of a folder of auto-generated scripts containing new database changed, the state of a folder of batch files that contain new tasks to be run on the server, the state of files specifying ISS settings changes, etc.

2) When I build a package the next time, the tool would know to only package the new script files, web.config changes, new batch files, new ISS settings since my last package

3) Apply the package unto my web application

I started looking into MS Deploy but it only seems to do number 3. I’ve been searching around for either an application that that does what I imagine or a strategy to combine some SMS and MS Deploy. I'm hoping that someone has already solved the problem I feel I have here. My last resort of course is to build the tool but again, that would be my last resort.


Solution

  • Are you using Team Foundation Server? If so, TFS comes with tools to automate builds (including labeling code, running unit tests, deploying, et cetera.) Take a look at http://msdn.microsoft.com/en-us/library/ms181710(v=vs.80).aspx

    TFS is not exactly easy to configure and get going but it's free if you are already using TFS.

    If you are not using TFS, look for continuous integration tools like NAnt or TeamCity.