Welcome to SPSF SharePoint SoftwareFactory
The SPSF Core Recipes for SharePoint SoftwareFactory is brought to you by the team of SharePoint Consultants of Steria Mummert Consulting AG
www.steria-mummert.com in Germany. We are specialized in establishing SharePoint development processes in companies, starting with SharePoint requirements engineering, architecture, development, SharePoint code analysis, SharePoint testing and deployment processes. We call the whole process SPALM (SharePoint Application Lifecycle Management)
http://spalm.codeplex.comOur intention is to provide our tools and concepts to the SharePoint community to make it easier to develop custom applications in SharePoint.
Announcement: Next release of SPSF SharePoint Software Factory (version 3.0) will be available right after release of VS 2010 (expected 12.04.2010). You can find a preview of our current work here
http://www.matthiaseinig.de/?p=139. Version 3.0 will support development for SharePoint 2007 and 2010 from within VS 2010 and VS 2008.
SPSF is based on open technology by Microsoft
SPSF Core Recipes for SharePoint SoftwareFactory is based on the free Microsoft Guidance Automation Extensions (GAX)
http://msdn.microsoft.com/en-us/teamsystem/aa718948.aspx. This toolkit is used to create software factories and several software factories are already provided by Microsoft, e.g. SFSF Smart Client Software Factory, WSSF Web Service Software Factory etc.
SPSF is NOT "yet another SharePoint framework"
We want to make sure that SPSF is not a SharePoint framework which needs to be installed in SharePoint or has dependencies to custom assemblies for SharePoint applications.
- SPSF helps to generate SharePoint code like an experienced developer would write. The generated code is based on our projects or taken from MSDN.
- There is no dependency to SPSF. Projects created with SPSF can be opended and compiled on any other plain computer with Visual Studio 2008.
SPSF Highlights
- F5 Deployment with automatic Debugging
- Import of existing WSP into Visual Studio
- Import of Content Types, Site Columns, List Templates from SharePoint into Visual Studio
- Automatic manifest.xml creation (and you can read the manifest.xml in your project)
- Automatic creating of .resx files (optionally)
- Wizards for SiteColumns, ContentTypes, ListDefinitions, ListInstances, Custom Actions etc.
- Wizards for WebServices, Application Pages, Delegate Controls etc.
- Wizards for Publishing Site Definition
- Automatic creation of a deployment package (with wizards)
- Integrates into existing WSPBuilder projects
- and a lot more...
Contents
- How to use SharePoint Software Factory
- How to use the SharePoint recipes
- How are WSP files created?
- How do I deploy and debug SPSF applications on my local computer
- How do I deploy my application to other SharePoint environments?
- Integration with WSPBuilder
- Get Help
- Your support !!!
- Available Recipes
How to use SharePoint Software Factory
To unleash the power of the sharepoint software factory, the sharepoint application project has to fulfill some requirements like solution/project structure and existing configuration files. As mentioned creating such a project with SPSF does NOT leave you stuck with it forever. At any time you wish to continue development without SPSF, you can uninstall it and your projects will still be compilable and deployable.
To create a project in Visual Studio, open the "New Project" Wizard and choose an application template from the Guidance Packages Group.

The following wizard gathers information about the application and the deployment, creates the solution structure compatible with SPSF and activates the SharePoint recipies. BTW SPSF supports F5 compiling, deployment and debugging (resp. automatic attachment to the correct worker process).
Back to contents
How to use the SharePoint recipes
Most SharePoint recipes like "Create new Content Type" are displayed in context menus depending on the current selection. For instance the recipe "Create new Content Type" is only displayed on projects which will create a .wsp solution.

Alternatively you can use the "New Item" dialog to run the SharePoint recipes.

After selection of a recipe often a wizard is displayed where you can enter the arguments of the SharePoint artefact.

Based on the entered arguments the SharePoint code and all files are generated in Visual Studio 2008 (e.g. see in screen below all files and the code for a typical content type).
Back to contents
How are WSP files created?
We are not using a third party tool like WSPBuilder or STSDEV to generate WSP files. We create WSP files with makecab.exe (as recommended by Microsoft).
The necessary files "manifest.xml" and "makecab.ddf" are generated automatically with the Microsoft TextTemplating technique (aka T4 templates). Both files are contained in every project.
Alternatively these files could also be edited by the developer themselves (sometimes this is required).
Back to contents
How do I deploy and debug SPSF applications on my local computer?
SPSF applications can be compiled by hitting F5 as any other project. Furthermore SPSF will deploy your solution to the bin-Folder or GAC of the webapplication you have configured upon creation of the project. The configuration can be changed by using one of the core recipies. The deployment process will retract the solution before deployment if requested, recycle the IIS application pool and will attach to the correct worker process for instant debugging.
As the whole process of compiling, deploying, recycling and attaching is a bit time consuming it might not be suitable for every little change. The quick deploy recipie will help you to use it only when neccesary.
Back to contents
How do I deploy my application to other SharePoint environments (e.g. DEV, TEST, INTEGRATION, PRODUCTION)?
Compiling a SPSF application automatically creates a deployment package in the VS project with all SharePoint artefacts. This package includes e.g. all .wsp solutions and deployment files based on MSBuild. With MSBuild you have full control over the deployment process which often includes several steps (like deployment of solutions, activation of features, iisreset, creation of sites etc.).

The deployment package includes batch files to start the deployment of the developed SharePoint application. The deployment process (written in MSBuild) often contains parameters like web application URLs. These parameters can be included in MSBuild-files or they can be collected from the user during the deployment. SPSF provides several forms (like a setup wizard) to collect for instance the web application URLs for the deployment of the wsp solutions files.
Back to contents
Integration with WSPBuilder
Since release 2.4.3 you can use SPSF in your existing WSPBuilder projects.
To enable SPSF open your WSPBuilder project and click menu "Tools -> Guidance Manager".

In dialog "Enable and Disable Packages" check "SPSF Core Recipes for SharePoint Software Factory" and click OK. With this dialog you can also disable SPSF in all your projects.

After enabling SPSF you can use the recipes in your project
Back to contents
Get Help
SPSF SharePoint SoftwareFactory provides an extensive help which is also integrated into the Visual Studio help.
More information can also be found on our blog:
www.spalmblogger.deFurther information
For more information on guidance automation, please see the following resources:
See below integration of SPSF into the help system of Visual Studio (includes Search).
Back to contents
Your support !!!
We will expand and improve SPSF over time. Our primary focus is to support SharePoint 2010 and, as soon as MS releases new versions of GAX and GAT, also VS2010. If you want to support this project, you can either extend the SPSF with your own Guidance Package (just download the source code to see how it works) or provide us with ideas, code and feedback for new recipes which we can include.
If you already have a project at codeplex with code snippets, webpart templates, code for sharepoint artefacts etc. please drop us a note if you want us to include it in SPSF.
Back to contents
Available Recipes
| Features | |
| Empty Feature | This recipe creates an empty farm, web application, site or web feature. |
| List and DocLib | |
| Content Type | Adds a content type to the current selected feature |
| List Definition | Adds a list definition based on a local installed list definition |
| Content Type Binding | Adds a binding between a content type and a list |
| Module | Adds a module to the current selected feature to provision files |
| List Instance | Adds a list instance definition to a feature. |
| Site Column | Adds a site column to the current selected feature |
| Field Types | |
| Simple Field Type | Adds a field type to the project |
| Field Type with a complex value | Adds a custom field type to store complex objects |
| Field Type with multiple columns | Sample to store a address with multiple columns. |
| Field Type Choice | Sample to store an employee status |
| Field Type Sample ISBN10 (Sample) | Sample from MSDN for a custom field type to store a ISBN10 number including validation rule |
| Field Type Social Security Number (Sample) | Sample from Ted Pattison for a custom field type to store social security number |
| Field Type for Flash Movie (Sample) | Sample for a custom field type to render a flash movie |
| Field Type for Ratings (Sample) | Sample for a custom field type to show a rating with graphics |
| Custom Actions | |
| Custom Action for Content Type | Adds a custom action to content type menu (ECB) |
| Custom Action for File Extension | Adds a custom action for a specific extension (e.g. .docx) |
| Custom Action for ProgID (Document Type) | Adds a custom action to a document type e.g. "InfoPath.Document" |
| Custom Action for List | Adds a custom action to existing menus in a list view (Settings, Actions etc.) |
| Custom Action for List Toolbar | Adds a custom action to a toolbar in a list (View, Edit, Display etc.) |
| Custom Action for Site | Adds a custom action to a site |
| Custom Action for SiteActions menu | Adds a custom action to the SiteActions menu |
| Custom Action Group | Adds a custom action to a site |
| Hide Custom Action | Hides an action of an item |
| Event Receivers | |
| Item Event Handler | Adds a event handler to react of event like ItemAdded, ItemUpdating etc. |
| List Event Handler | Adds a event handler to handle events like FieldAdded, FieldUpdating etc. |
| Web Event Handler | Adds a event handler to webs |
| Email Event Handler | Adds a event handler to handle events like EmailReceived |
| Webs and Sites | |
| Team Site Definition | Adds a custom team site definition |
| Blank Site Definition | Adds a custom blank site definition |
| Feature Stapling | Adds a FeatureSitetemplateAssocation to the selected feature |
| Theme | Adds a theme to the project |
| Theme Activation | Adds code to activate a theme with a web feature |
| Publishing | |
| Publishing Site Definition | Adds a standard publishing site definition along with the required features. |
| Master Page | Adds a master page current selected project. |
| Page Layout | Adds a page layout to the current selected project. |
| Import | |
| Import List Instance | Import list instance |
| Import .wsp solution from local farm | Imports an existing WSP solution from the local SharePoint farm into the project |
| Import Site Column | Import a site column from the local SharePoint into the current selected feature |
| Import List Template | Import list template |
| Import Content | Imports content from SharePoint into the project |
| Import Content Type | Imports an existing content type from a given SharePoint site |
| Import .wsp solution | Imports an existing WSP solution file into the project |
| Application Pages |
| Application Page | Add a layouts page to the project inherited from LayoutsPageBase |
| Administration Page | Add an administration page to the project inherited from LayoutsPageBase |
| Unrestricted Layouts Page | Add a unsecured layouts page to the project inherited from LayoutsPageBase |
| ASP.NET | |
| Create WSDL and DISCO | Creates the wsdl and disco file |
| Webservice | Adds a ASP.NET web service |
| Administration Web Service | Adds a ASP.NET web service for administration |
| Delegate Control (.ASCX) | Adds a delegate template with a asxc control |
| Delegate Control (.CS) | Adds a delegate template with a webcontrol (.cs) |
| Http Handler | Adds a http handler to the project and a feature to deploy the web.config modifications for the http handler |
| Http Module | Adds a http module to the project and a feature to deploy the web.config modifications for the http handler |
| WebParts | |
| SharePoint Web Part | Adds a web part to the project derived from Microsoft.SharePoint.WebPartPages.WebPart |
| ASP Web Part | Adds a web part to the project derived from System.Web.UI.WebControls.WebParts.WebPart |
| Ajax Web Part | Adds a Ajax web part to the project |
| Visual Web Part | Adds a smart part to the project |
| Simple Filter Consumer Web Part | Adds a filter web part to the project |
| Filter Provider Web Part | Sample filter provider web part to provide multiple values (MSDN sample) |
| Filter Consumer Web Part | Sample filter consumer web part to consumer multiple values (MSDN sample) |
| Workflows | |
| Sequential Workflow (ASPX Forms) | Adds a sequential workflow with optional ASPX forms to the project |
| Advanced | |
| Minimal CAS | Adds a minimal Code Access Security policy |
| Deployment | |
| Deploy Solution(s) | Deploys the selected wsp solution(s) to the local SharePoint farm. |
| Redeploy Solution(s) | Redeploys the selected wsp solution(s) to the local SharePoint farm (complete undeploy before a deploy). |
| Undeploy Solution(s) | Undeploys the selected wsp solution from the local SharePoint farm (retract and delete solution). |
| Upgrade Solution(s) | Upgrades the selected wsp solution in the local SharePoint farm. |
| Quick Deploy | |
| Copy Assembly | Copies the assembly of the selected project to GAC. |
| Copy Both | Copies the assembly of the selected project to GAC and all files in folder "12". |
| Copy to SharePoint Hive | Copies all files in project folder "12" or "14" to the SharePoint hive on the local machine. |
| Debugging | |
| Attach to Worker Process | Starts the debugging of the selected project and attaches the debugger to the selected w3wp worker process (IIS). |
| Recycle App Pool | Recycles the selected application pool in IIS. |
| IIS Reset | Performs an iisreset on the local maschine. |
| Attach to owstimer.exe | Starts the debugging of the selected project and attaches the debugger to the ows timer process (OWSTIMER.EXE). |
| Restart owstimer.exe | Restarts the owstimer service. |
| STSADM | |
| stsadm activatefeature | Activates the selected feature in the selected site or web. |
| stsadm deactivatefeature | Deactivates the selected feature in the selected site or web. |
| stsadm uninstallfeature | Uninstalls the selected feature. |
| stsadm copyappbincontent | Runs stsadm -o copyappbincontent. |
| stsadm execadmsvcjobs | Runs stsadm -o execadmsvcjobs to run all pending deployment jobs. |
| Open stsadm Prompt | Opens a prompt to enter stsadm commands manually. |
| CodeAnalysis | |
| Run SPCop | Checks to SharePoint project for violations of best practices and recommendations |
| Run SPDisposeChecker | Runs SPDisposeChecker for selected project. |
| Helpers | |
| Check Broken Fields | Checks a site collection for fields which are not properly installed. |
| Delete Failed Deployment Jobs | Deletes failed deployment jobs in the local SharePoint farm. |
| Get AssemblyName | Displayes the full assembly name of the current selected project. |
| Get SharePoint Version | Displays the installed SharePoint version on the local machine |
| Open CA Solutions | Displays the web page "Solution Management" in SharePoint Central Administration. |
| Open Debugging Webapp | Opens the debugging webapplication of the project in the browser. |
Back to contents