There are lots of tools available to help developers, but I always think the single most useful thing is actually seeing a good example of the thing I'm trying to develop. This is why SharePoint blogs are so popular right? As well as checking my favorite blogs or past articles, I'm always going back to previous work - perhaps to see what values I used in a certain SharePoint file or to grab a chunk of code I wrote which I can amend to fit my current requirement. So today I want to point you in the direction of some useful samples which could be good reference material if you're a SharePoint developer - in actual fact I'm not releasing anything new here, but highlighting that my recent 'Config Store' solution provides a great "one-stop shop" of downloadable examples of several common SharePoint development tasks. Examples of the following dev tasks can all be found in the solution:
- Deploy site columns, content types as Feature
- Deploy a list (with default list items) as a Feature
- Using Feature receivers
- Using SPWebConfigModification to make web.config changes in code/as part of a Feature
- Using SPQuery to efficiently find items in a list
- Build a Solution package (.wsp) without WSP Builder
- Write a Solution deployment script to retract Solution, deactivate Feature, redeploy Solution, activate Feature etc.
- Using event receivers
- As a .Net bonus, how to use the HttpRuntime class to work with ASP.Net caching outside of a web context
The entire set of code/Feature files can be downloaded from Codeplex, making it a great reference project containing samples of all the tasks listed above. If this is useful to you, the list below details the file to open to find the code sample, and some notes which might help you to get to grips with the task:
Deploy site columns, content types as Feature:
File | Notes |
ConfigStoreElements.xml | This is accomplished by use of the Field/ContentType Feature elements. Note these should be before any ListTemplate/ListInstance items in the same elements file - if using both sets of elements in different files, ensure the field/content type file is listed first in manifest.xml. |
Deploy a list (with default list items) as a Feature:
File | Notes |
ConfigStoreElements.xml | This is accomplished by use of the ListTemplate/ListInstance Feature elements. |
Feature receivers:
File | Notes |
ConfigStoreFeatureReceiver.cs | In my case, the Feature receiver makes modifications to web.config and programmatically adds list event receivers to a list. |
web.config modifications
File | Notes |
ConfigStoreFeatureReceiver.cs | This is accomplished by use of the SPWebConfigModification class. I add three entries to the web.config to support my solution. |
Using SPQuery to find items in a list:
File | Notes |
ConfigStore.cs | I have two methods in the ConfigStore class which perform queries in this way (also known as a CAML query). |
Build a Solution package (.wsp) without WSPBuilder:
File | Notes |
makecab.ddf/ | Whilst WSPBuilder offers a great automated way to build Solutions, occasionally there is a need to step outside the tool to build the package 'manually'. In my case, I had a problem where WSPBuilder was adding elements in the 'wrong' order to the generated manifest.xml file, and this was causing the Solution deployment to fail. |
Solution deployment script to retract Solution, deactivate Feature etc:
File | Notes |
COB.SharePoint.Utilities.ConfigStore_Install.bat | This is the script I've often used to deploy my Solutions. It has error checking at each stage so I can easily tell at what point the install fails for simpler problem diagnosis. |
Using event receivers:
File | Notes |
ConfigStoreListEventReceiver.cs | In the Config Store solution I use a list event receiver to add items to the cache when the list contents change. This code shows using the ItemAdded and ItemUpdated events on the list. |
Using the HttpRuntime class to work with ASP.Net caching outside of ASP.Net:
File | Notes |
ConfigStoreListEventReceiver.cs | Something to remember with list event receivers is that we actually don't have access to HttpContext.Current or SPContext.Current - both are null. If it wasn't for the HttpRuntime class, this would be a problem for my Config Store code since I wanted to add/remove items from the cache in the list event receiver (i.e. manage the cache as soon as list items are changed). Fortunately, HttpRuntime allows us access to the ASP.Net framework from any code location (e.g. console app). |
The link to download all this stuff is at http://www.codeplex.com/SPConfigStore. Hope you find the samples useful, feel free to leave a comment if anything doesn't make sense.
1 comment:
Found these very useful, cheers chris!
Post a Comment