The one thing that I am having a hard time figuring out with developing an extensible application platform in ASP.NET MVC 3 is how to modularize everything into an easy to update and distributable form.
The ideal solution I think would be to be able to pack everything up is some compressed file like zip/rar/tar (but still having the source code and views compiled in a dll file) and build into the the core platform a way to allow a non-technical select the compressed file and install it automatically.
The only thing I have manage to compile in separate a .dll file are the controllers, classes, and razor views (with help from a blog post). Now this issue with this is that the .dll projects doesn't have access to the shared views from the main project (or I can't find a want to access them) and I have to copy the shared views from the main project into all the separate projects holding each module (not to mention the configuration files I also have to copy).
If I make a change to the shared views that other module are using (that other people are maintaining), they would have to update their module to copy in the new version of the shared views and this is just a solution that doesn't seem very manageable.
I am looking to see how other people setup large extensible C# ASP.NET MVC 3 applications.
EDIT - New Ideal Solution
I was wrong in my initial ideal solution. As pointed out by Tungano, my initial ideal solution would kill any type of caching the server/browser would be able to do on css, javascript, images, etc.
My new ideal solution is the whole compressed file installation idea. You can have the compiled dll with the source code and views in it along will all the separate css, javascript, images, etc. files in the compressed file. Then through the application itself you select the compressed file and the application will handle placing all the files in the correct location. Any links on how to create this type of functionality would be great.