1 / 35

Minneapolis Office Developer Interest Group (MODIG)

Minneapolis Office Developer Interest Group (MODIG). Neil Iversen Inetium. February 21, 2008 Solutions and Feature Development. http://justaddcode.com/. The Plan. Introduction  You are here Feature Presentation Solutions and Features Next Topic Selection Random Stuff.

aman
Download Presentation

Minneapolis Office Developer Interest Group (MODIG)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Minneapolis Office Developer Interest Group (MODIG) Neil Iversen Inetium February 21, 2008 Solutions and Feature Development http://justaddcode.com/

  2. The Plan • Introduction  You are here • Feature Presentation • Solutions and Features • Next Topic Selection • Random Stuff

  3. User Group Goals • Provide a community for SharePoint Developers • Share development knowledge • Exchange tips/tricks/other • Understand SPUtility as a metaphor for life

  4. User Group Format • Presentations • 1-2 per meeting • Hopefully Demo Heavy • Highlights of Nifty Things • See next slide • QA/Discussion/Random Things

  5. Call for Cool Stuff • Created something cool? • Send Screenshots or Videos • We’ll try to feature some items here

  6. Sharepointmn.com/pages/modig.aspx • Our current home • Convenient URL • Meeting information • Previous presentations • Running on SharePoint • As required by SharePoint User Group Law

  7. Upcoming • Next Meeting • Week Of: March 17-20 (Watch your email) • Topic: TBD – Hopefully later today • MNSPUG • March 12 (9:00am – Noon) • Topic : TBD (sharepointmn.com)

  8. Solutions and Features • Feature Intro • Feature Limitations • Custom Actions • Dealing with Dependencies • Stapling • Managing Files • Feature Receivers • Solutions • Questions

  9. Feature Introduction • Deployment vehicle for SharePoint applications • The Goal • Setup.exe style deployment • The Reality • Not exactly

  10. Feature Introduction • Ability to customize SharePoint • Used extensively by SharePoint itself • Actions • Install/Uninstall • Activate/Deactivate • Stored in the Hive • 12\TEMPLATE\FEATURES • Separate directory for each feature • Scopes • Web, Site, Farm, Web App • Common Scenarios • List Templates • Workflow

  11. Key Feature Limitations • Limited set of supported schemas • Supports fewer file options than Solutions • Must be bundled in Solutions for larger farms • Upgrading\Removing deployed features is difficult • Might not follow expected behavior

  12. Feature Lifecycle • Normal Behavior • Farm Behavior

  13. Custom Actions • Create your own menu options • Many extensibility points • Main Attributes • Title • Location • GroupId • Sequence • HideCustomAction • Hides an existing Custom Action

  14. Custom Actions • URL Prefixes • ~site – Relative link to the SPWeb • ~sitecollection – Relative link to the SPSite • URL Replacements • {ItemId} – List Item’s ID • {ItemUrl} – List Item URL • {ListId} – ID of the List • {SiteUrl} – Like ~site except it can be used anywhere • Example <CustomAction Id="325b7c78-f041-4d1b-856b-f9b1e49ddfeb" GroupId="PersonalActions" Location="Microsoft.SharePoint.StandardMenu" Sequence="1000" Title=“My Title" Description=“A Custom Action <UrlActionUrl=“javascript:alert(‘You were at {SiteUrl}’);"/> </CustomAction>

  15. Managing Files in Features • Deploy a file into a site • Web • Document Library • URL can be aliased • MobileRedirect (\m) uses it • Not as powerful as Solutions • Uninstall behavior is non-intuitive • Example: <Elements xmlns="http://schemas.microsoft.com/sharepoint/"> <Module Name=“file" Url=“” Path=“”"> <File Url=“MyFile.aspx" /> </Module> </Elements>

  16. Demo: Features and Files

  17. Dealing with Dependencies • Problem: Feature depends on another SharePoint Object • Solution: Create dependency between the features • Example • <ActivationDependencies> <ActivationDependencyFeatureId="52890518-036f- 4027-babd-f4c7df3ee429" /> <ActivationDependencyFeatureId="6d276cfc-1c84- 46cc-8566-500e66213e06 " /> </ActivationDependencies>

  18. Dependency Limitations • Feature Chains • Limited to one visible feature • Dependencies can’t be triggered at a higher scope • Ex: Farm Feature can’t depend on a Web Feature • Features can’t be automatically activated at different scopes • Ex: Web Feature can’t activate a Farm Feature • Hidden Features • Automatically Activated for Dependencies • Automatically Deactivated when the last Dependency is Deactivated • Can’t be depended on in different scopes • Can’t have their own dependencies • Can add an additional level to Feature Chains

  19. Stapling • Problem: Can’t customize out of the box Site Definitions • Solution: Stapling! • Scopes: Farm, Web App, Site • Note: Not Web • FeatureSiteTemplateAssociation • <FeatureSiteTemplateAssociation Id="b04e59b1-2c21-48fa-9497-470b1ab711b0" TemplateName="STS#0" /> • <FeatureSiteTemplateAssociation Id="fd45b13f-6334-4bce-b87c-49e3f820a74c" TemplateName=“GLOBAL#0" />

  20. Demo: Stapling in Action

  21. Feature Recievers • The ‘Custom’ Feature • .NET Code • Override • FeatureInstalled, FeatureUninstalling • FeatureActivated, FeatureDeactivating • Example • <Feature Id="0a7e1ca9-ee71-4407-80a0-b5b57f4f6f5d" Title=“My Feature Reciever" Scope="Site" ReceiverAssembly=“MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e35a4d2663eae0ae" ReceiverClass=“MyAssembly.MyFeatureReciever" xmlns="http://schemas.microsoft.com/sharepoint/">

  22. Feature Receivers – Getting Context • Getting Context • Retrieving the Current Scoped Object • SPFeatureReceiverProperties • SPFeatureReceiverProperties.Feature.Parent • Cast to the appropriate type • Scope: Web • SPWeb web = (SPWeb)properties.Feature.Parent; • SPSite site = (SPSite)properties.Feature.Parent • Example Usages • Perform clean uninstalls of features • ‘Upgrade’ features using Activate • Set dependencies to chain actions together • Web.config changes • Address gaps in current supported Features • Policies, Custom Fields, …

  23. Feature Recievers - Debugging • Based on Deployment/Activation Method • Stsadm • Runs as currently logged in user • Debug/Console.WriteLine • System.Diagnostics.Debugger.Launch(); • Web Interface • Runs as App Pool user • Need to use logger (EventLog, or some Logging code) • Attach to w3wp.exe • DLL Deployment • Overwrite Existing DLL • iisreset • stsadm –o activatefeature -force

  24. Feature Properties • Configuration for your Feature • Allow different values for Dev/Test/Prod • Combine with scoped property bags to set configurations • Example <Properties> <Property Key=“MyKey" Value=“123" /> <Property Key=“DBServer" Value=“prodsql001" /> </Properties>

  25. DEMO: Deploying SPWeb Properties

  26. Manually Activating Features • Why? • Evade chaining restrictions (at your own peril) • Working with Hidden Features • Manage Stages of a Site with a Web Part • Creating a ‘Suicide Feature’

  27. Manually Activating a Feature • Get your Context • Ex: SPWeb • Find the Feature Collection • Ex: SPWeb.Features • Find the Feature’s Guid • Ex: GuidfeatureGuid = new Guid(“0a7e1ca9-ee71-4407-80a0-b5b57f4f6f5d”) • Activate! • Ex: SPWeb.Features.Add(featureGuid)

  28. Solutions • Replaces copying files across servers • …with creating XML/DDF files • Can Easily Deploy • Multiple Features • Web Parts • Assemblies (GAC or BIN) • SafeControls • Code Access Security Settings • Plain Files • Farm Safe

  29. Anatomy of a Solution • Manifest.xml • XML to define what you want SharePoint to do • Needs to be included in the DDF • The DDF • Defines what ‘makecab’ cabs • Slightly headache inducing file format • WSP == CAB

  30. Demo: Solutions at Work

  31. Summary • Features are Nifty • Solutions are Useful • Getting full value from either has a learning curve

  32. Questions?

  33. Next Meeting Planning • Possible Topics • PowerShell and SharePoint for Developers • Extending SharePoint with Custom Fields (Column Types) • …

  34. Random Stuff Neil Iversen Inetium http://justaddcode.com Feedback Forms/Giveaway Mingle, Eat, Feedback See you next time!

More Related