We use a combination of a custom-built tool for deployment of GAC assemblies, and MSDeploy for the site configuration and code. MSDeploy really works well for that stuff, but (at least in the version we've been working with for 2 years) is rather broken for GAC stuff, which forced us to build our own tool for that part of the process.
The only difficult part, I find, is coordinating all of that with changes to the database. It demands discipline in the way we make enhancements, so that DB changes can be deployed first, and thus must be backward compatible allowing the previous version of code to still function properly.
We use a combination of a custom-built tool for deployment of GAC assemblies, and MSDeploy for the site configuration and code. MSDeploy really works well for that stuff, but (at least in the version we've been working with for 2 years) is rather broken for GAC stuff, which forced us to build our own tool for that part of the process.
The only difficult part, I find, is coordinating all of that with changes to the database. It demands discipline in the way we make enhancements, so that DB changes can be deployed first, and thus must be backward compatible allowing the previous version of code to still function properly.