Theoretically, you can either use a development server with MOSS installed or install virtual machines on your development PCs.
One server per developer is not applicable in real life. So, we decided to go for the second choice; virtual machines. Unfortunately with only 1GB RAM, this approach is not applicable for us either. Our development PCs don't meet the minimum hardware requirements.
What this means basically, that to develop web parts and workflows for MOSS in our environment, we will have to find a workaround and there is one.
In this and the upcoming posts, I will describe in details the steps we performed to setup our machines to develop remotely for MOSS and WSS 3.0.
Step 1: Installations
1. Install .NET Framework 3.0 or 3.5
2. Install Office 2007 System
3. Install Visual Studio 2005 extensions for .NET Framework 3.0 (Windows Workflow Foundation)
4. Install SharePoint Server 2007 SDK: Software Development Kit or Windows Sharepoint Services 3.0 Software Development Kit
If you need to develop for MOSS and WSS 3.0 installing MOSS SDK is enough because it contains both. However, we do WSS development only and therefore I just installed WSS SDK.
Step 2: Copy and Install required DLLs
1. Copy the files under the folder [Drive$]:\program files\common files\microsoft shared\ web server extensions\12\
From your MOSS server (a server with MOSS installed) to a relevant path on your development machine
Below a snapshot of the folder contents on my development machine.
2. Extract required dlls from the GAC_MSIL directory
Copying the assemblies under the ISAPI folder is not enough. There are other assemblies such as Microsoft.SharePoint.Library.dll that are found under the ... microsoft shared\web server extensions\12\ISAPI folder.
These assemblies can be found under the GAC_MSIL directory. To get these assemblies create a folder on your MOSS server (lets call it tmpmsil) and then open the command prompt and write the following command line. Make sure to navigate to the windows/assembly directory.
C:\Windows\assembly\ xcopy GAC_MSIL c:\tmpmsil /E
Below is a snapshot of the contents of the tmpmsil after running this command.
Not all these assemblies are necessary. You have to copy the assemblies related to SharePoint to your development machine.
I installed the following assemblies to the GAC in my development machine
- Microsoft.office.DocumentManagement.DocSite
- Microsoft.office.Excel.Server
- Microsoft.Office.Excel.Server.CalculationServer.dll
- Microsoft.Office.Excel.Server.CalculationServer.Proxy.dll
- Microsoft.Office.Excel.Server.resources.dll
- Microsoft.Office.Excel.WebUI.dll
- Microsoft.Office.InfoPath.Server.dll
- Microsoft.Office.InfoPath.Server.Administration.CommandLine.dll
- Microsoft.Office.InfoPath.Server.Intl.dll
- Microsoft.Office.InfoPath.Server.Intl.resources.dll
- Microsoft.Office.InfoPath.Server.Pages.dll
- Microsoft.Office.Policy.Barcode.Generator.dll
- Microsoft.Office.Policy.Intl.dll
- Microsoft.Office.Server.Conversions.dll
- Microsoft.Office.Server.Diagnostics.dll
- Microsoft.Office.Server.intl.dll
- Microsoft.office.server.search.intl.dll
- Microsoft.office.server.search.intl.resources.dll
- Microsoft.Office.Server.UI.dll
- Microsoft.Office.SlideLibrary.dll
- Microsoft.Office.Workflow.Feature.dll
- Microsoft.office.workflow.routing.dll
- Microsoft.office.workflow.routing.intl.dll
- Microsoft.SharePoint.AdministrationOperation.dll
- Microsoft.SharePoint.Diagnostics.dll
- Microsoft.SharePoint.Dsp.dll
- Microsoft.SharePoint.Dsp.OleDb.dll
- Microsoft.SharePoint.Dsp.SoapPT.dll
- Microsoft.SharePoint.Dsp.Sts.dll
- Microsoft.SharePoint.Dsp.XmlUrl.dll
- Microsoft.SharePoint.intl.dll
- Microsoft.SharePoint.Library.dll
- Microsoft.sharepoint.portal.intl.dll
- Microsoft.SharePoint.Portal.Upgrade.dll
- Microsoft.SharePoint.Publishing.Intl.dll
- Microsoft.SharePoint.Publishing.Intl.Resources.dll
- Microsoft.sharepoint.search.intl.dll
- Microsoft.office.server.search.intl.resources.dll
- Microsoft.SharePoint.SetupConfiguration.Intl.dll
- Microsoft.sharepoint.WorkflowActions.intl.dll
- Microsoft.SharePoint.workflowactions.intl.resources.dll
- Microsoft.SharePoint.workflows.dll
- Microsoft.SharePoint.workflows.intl.dll
- Microsoft.SharePoint.workflows.intl.resources.dll
- Microsoft.Web.Design.Server.dll
- Microsoft.Web.Design.Server.intl.dll
Beside the assemblies in the ISAPI folder.
To install an assembly to the GAC, you need to do the following steps:-
1. Browse to Control Panel -> Administrative Tools and then open the Microsoft .NET Framework 2.0 Configuration
2. Click the Add an Assembly to the assembly cache as shown below
3. Browse to the assembly and click open
Step 3: Display WSS Workflow Items in the Visual Studio 2005 toolbox
1. Create a new project of type SharePoint Sequential Workflow library (or state machine workflow library)
2. View the workflow in design mode
3. Right click the toolbox and click on Add Tab. Empty tab will appear, name it WSS Workflow or any other name you find it appropriate.
4. Right click on the newly added tab and select "choose items"
5. Browse to the path \Program Files\Common Files\Microsoft Shared\web server extensions\12\ISAPI
6. Select the Microsoft.shaerpoint.workflowActions.dll assembly
7. Do not forget to check the Complete Task Activity which is highlighted after selecting the Microsoft.sharepoint.workflowActions.dll.
Below is a snapshot of my VS toolbox after adding the WSS workflow items.
Step 4: Insert WSS XML Code Snippets
1. In Visual Studio 2005, open the Code snippets manager (found under the tools menu, if you could not locate it use the Ctrl K+B shortcut to open it)
2. Make sure the language selected is XML. Click Add and browse to C:\ program files\Microsoft Visual Studio 8\xml\1033\Snippets\Windows SharePoint Services Workflow\" as shown below.

3. Click Open.
Step 5: Install Windows SharePoint Services 3.0 Tools: Visual Studio 2005 Extensions, Version 1.1.
WSS extensions can not be installed on a machine that does not have WSS installed. Well, that is theoretically. Practically, you can add a registry key to be able to install the WSS extensions.
This is not a recommended practice, not supported at all. But if you still want to do so, open the registry and create the following key [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\12.0]
After creating the key add the following string value
“Sharepoint”=”Installed”.
Below is a snapshot of how my registry looks like after adding the SharePoint string key.
Next post we will walk through creating web part step by step including how to sign assemblies, create a GUID...etc.
Happy SharePointing :)