Solution Folder Structure

A solution folder should have a setup similar to the following:

+ Main Solution    + _MilosComponents Project        + MilosAssemblies Folder        + MilosStaticAnalysisRules Folder        + ThirdPartyAssemblies Folder    + _UnitTestHelpers Project      + StaticAnalysis Folder    + MilosBusinessObjects1 Project      + StaticAnalysis Folder    + MilosBusinessObjects1Tests Project      + StaticAnalysis Folder    + MilosBusinessObjects2 Project      + StaticAnalysis Folder    + MilosBusinessObjects2Tests Project      + StaticAnalysis Folder    + MilosWinFormOrWeb Project      + StaticAnalysis Folder
Here is an explanation of the individual items:

_MilosComponents Project
This project contains items that are not truly compiled into any of the output assemblies, but are still important for the overall solution. Here are some examples:

_UnitTestHelpers Project
This project is used to help configure unit testing that is specific to this solution. It usually contains a subclass of EPS.QualityTools.UnitTestFramework.Business.BusinessObjectFixture<T> where T : IBusinessEntity. One of the primary purposes of this subclass is to designate a configuration file to be used during unit testing.

BusinessObjects Projects
There can be any number of individual projects that make up the actual output assemblies. Their names will be defined by the desired DLL/project names. Each project contains a StaticAnalysis folder which contains an FxCop or Team System Static Analysis file used to perform an automated code review. Milos BusinessObjects projects typically contain pairs of related xxxxxBusinessEntity and xxxxxBusinessObject files.

Note: Each BusinessObjects project should only reference assemblies that are copied into the MilosAssemblies folder of the _MilosComponents project of the current solution!

UnitTest Projects
Every Milos Solution must have unit tests. Typically you will add a Unit Test project for each BusinessObjects project using the name of your project plus "UnitTests" at the end. For instance, if your project is called "UserBusinessObjects", your unit test project is called "UserBusinessObjectsTests".

Note: Unit tests may not always be possible. For instance, it may not make sense to unit test UI controls. If you think your project should not have unit tests, please get approval to omit unit tests from your supervisor/manager.

WinForm Or Web Projects
Milos Solutions typically have one or more WinForms or ASP.NET Web projects which make up the User Interface layer of the solution and make use of the BusinessObjects projects listed above.




Last Updated: 8/1/2006