Now the Microsoft Dynamics CRM 2011 has been released, I'd like to guide you through an efficient development workspace for CRM 2011. The overall develop/build/debug process should be very smooth, see the following diagram:
First of all, the CRM 2011 only support 64bits server, so if you are using Windows 7, I suggest you to use the Oracle VM VirtualBox to install CRM 2011 server. My experience is the VirtualBox does everything you need for the development purpose, quicker and smaller, and also it supports 64bits Guest OS (even with a 32bits Host OS).
The minimum RAM required to run CRM 2011 (all-in-one box) is 3GB (recommend 4GB); It's also possible to install the SharePoint foundation 2010 on the same box if you have SharePoint document integration.
About the Host PC, the minimum RAM required is 4GB, it's good to have 8GB RAM (all with 64bits Windows 7); install Visual Studio 2010 on the Host PC for better performance, then you can set up the Visual Studio 2010 Remote Debugger (x64) on the Guest OS that has CRM 2011 server installed (refer this article about how to Build a handy Dynamics CRM development environment).
Next, after you developed a CRM plugin in Visual Studio 2010, you may register it using the Plugin Registration Tool (can be found in the CRM 2011 SDK). Make sure you register the DLL in the Disk (during development/testing phase); Also change the project properties in Visual Studio 2010: change the Build | Output path to the CRM server assembly folder, i.e.:
\\CRM\c$\Program Files\Microsoft Dynamics CRM\Server\bin\assembly\
So each time you build the project, the new DLL and PDB file will be output to the assembly folder, CRM will pickup the new plugin DLL automatically without manually re-registering it.
If you get the error message when rebuild the project in Visual Studio: "Unable to copy file ... because it is being used by another process...", you may add the "Pre-build event command line" to recycle the CRMAppPool or restart the Service of the CRM server (See: Build a handy Dynamics CRM development environment).
If you use PowerShell to do so, you need to change the Host PC's Execution Policy to Unrestricted and RemoteSigned.
On a 64bits Host PC, use the below command to start PowerShell,
Then execute the following command:
(Note, the 32bits PowerShell command line is in another folder:
To debug a plugin, make sure you attach the right process:
- online - w3wp.exe
- offline - Microsoft.Crm.Application.Hoster.exe
- asynchronous registered plug-ins (or custom workflow assemblies) - CrmAsyncService.exe
- sandbox (isolation mode) - Microsoft.Crm.Sandbox.WorkerProcess.exe
Hope it helps!