HOW TO: Organize Visual Studio Solution for Microsoft Dynamics CRM Customizations and Add-ons

Today I want to share how I organize Visual Studio Solution for small and medium size Microsoft Dynamics CRM implementation projects. For big projects solutions' structures are different and significantly depend on projects.

Below you can find common structure of a solution:

It doesn't mean that all solutions I did have the same structure. But all solutions have some or all projects from the list. Some solutions have even more projects.

Let me describe each project and folder one by one.

Common
Contains Proxy classes, Option Sets, Extensions, Common logic for plugins, workflows, tools and add-ons.

Plugins
Contains plugins. I will explain how I organize this project in my next posts.

Reports
Contains custom reports.

Solutions
Contains versions of Microsoft Dynamics CRM Solutions we working on

Web Resources
Contains Web Resources (JavaScripts, Images, Html, etc.). I will explain how I organize this project in my next posts.

Workflow Activities
Contains Workflow Activities

Folder "Tools" contains console applications for service tasks (For example: old annotations clean up tool) and tools to execute periodic (For example: Credit Limit Updater (has to be executed nightly)) or one-time business logic.

Folder "AddOns" contains web applications. (For example: "Custom calendar").

To avoid compilation issues we have to configure solution properly. Right click on the solution and choose "Properties"


Following window will be opened:


Select "Configuration" on the right side of the window and then uncheck "Build" checkboxes for "Solution" and "WebResources" projects. Click "Apply".

Good luck with your projects :)

You can download sample solution here: