According to Brian, when creating a public API, you should fix it as much as possible, which means that after the initial version it should change as little as possible. However, to do something that is stable requires a lot of effort, so if you are not ready to use the API, you should internalize it as much as possible, and for this reason you may need to combine things more than separate them.
However, I am not going to propose an architecture appropriate for your application based on the description of paragraph 5. What you need to do is to weigh the pros and cons of several large projects against having a small number of small projects. I mean, the more you plan to do, the easier it will be on the line if you stick to the plan.
Thus, contrary to Brians' answers, I would not recommend that you make your whole system βas less connected as possible,β just because you make it as loosely coupled as it should be .;) Short-linked code can cause as many problems, how closely related code if you abuse it.
Cm:
1. Which is better, many small assemblies or one large assembly?
2. Specific downstream sides for many-max assemblies?
In the end, only you know how much you want to focus on each of the "... features", maintainability, extensibility, reliability, etc. So, plan your priorities and tasks correctly and correctly.
Regarding branching strategies, you can read the TFS Branching Guideline 2.0 , which is very familiar with various branching strategies, from basic to advanced. Even if you are not using TFS, this is a good read guide (I am using SVN at the moment). Since I currently work in small groups with 1-4 developers, I tend to use a strategy that is between basic and standard. Not that I recommend this for you, but it works best for our team.
As for the exchange of codes between projects. In SVN, we can use " externals ", which means that the shared file will be displayed in several folders, so when you change one copy and commit change to svn, all other copies will be updated in the next svn update. However, I cannot remember if TFS has anything like that.
Note: Beware of external ones in SVN ... they can cause ... problems .;)
My advice is to try to avoid sharing aspx, ascx and master pages as much as possible. Usually it hurts a lot more than it helps. Instead, try using inheritance or other alternatives to achieve your goal.
ASP.NET MVC 2.0 has a concept called "Regions" where you create subsections of the application in isolation from the rest. As far as I know, these areas can be supported in separate projects from the "main" application. This sounds very similar to what you are requesting, so maybe you should study this.
Hope this makes sense .;)