#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
SharePoint Development 101
1. You’re Doing It Wrong:
A New Developer’s Primer for SharePoint
– or –
Everything that you know is useful,
but is still, somehow, very, very
wrong.
#spdev101
4. Me:
Technical Lead @ Planet Technologies
Developer
Father
Community Organizer
Virginia Tech Hokie
Penny Arcade Expo Enforcer
UNSC M12 FAV “Warthog” gunner
World Famous Jungle Cruise Skipper (ret.)
#spdev101
6. SharePoint Development 101
• What do you get?
• What’s the same?
• What tools do I need?
• Key dev concepts you need to know
• 10 things every SharePoint developer should
know
• How to get your code rejected by your
SharePoint Architect(s)
• Resources
#spdev101
7. What do you get?
• You get a lot of functionality for free
– Authentication/Authorization
– Page Templating
– Workflow hosting/reporting
– Data storage
• You get a LOT of functionality for free
– Federated Search – Metadata management
– Excel Data Services – Access Services
– –
Business Connectivity Services Scalable Service Hosting
– Single Sign-On – Visio Workflow integration
– Etc. – Etc.
#spdev101
8. What’s different?
• Website Structure
– Web Application → Site Collection → S.C. Root Web →
Subwebs
• Deployment
– Code → Assembly → Feature (usually) → Package (.WSP)
• Fea⋅ture /ˈfit ər/ -noun
ʃ
1. A functional unit of SharePoint functionality, scoped at a Farm, Web
Application, Site Collection, or Web level
• Packages
– First added to the server farm
– Then, deployed to individual web applications (or globally)
#spdev101
9. What’s the same?
• SharePoint is an ASP.Net app
– Web.config
– HTTPHandlers/HTTPModules
– Authentication
– Master Pages
– Web Parts == Composite Server Controls
• Inherit from System.Web.UI.WebControls.WebParts.WebPart
– Postbacks/Event Lifecycle Model
#spdev101
10. What tools do I need?
• Virtual Machine w/ Visual Studio, SQL Server, Active
Directory, IIS, and MS Office running a server OS (64-bit
for SP 2010)
• Microsoft SharePoint 2010 SDK
– Documentation
– Code samples
• SharePoint Visual Studio add-ins
Windows SharePoint Services 3.0 Tools: Visual Studio 2008
Extensions, Version 1.2 (VSeWSS)
WSPBuilder (for VS 2008/SP 2007 or VS/SP 2010)
Visual Studio 2010 Tools for SharePoint Development (SP 2010
Only)
Microsoft Office Developer Tools for Visual Studio 2012 -
Preview 2 (SP 2013 only, SP 2010 is OOB) #spdev101
11. Add-Ins: SharePoint vs. Visual Studio
SharePoint SharePoint SharePoint
2007 2010 2013
WSPBuilder WSPBuilder NOPE :(
2008
VS
Visual Studio
2010 Tools for
2010
WSPBuilder NOPE :(
SharePoint
VS
Development
Microsoft Office
Developer Tools
2012
NOPE :( Built-in :D
for Visual Studio
VS
2012 - Preview 2
#spdev101
12. Key dev concepts you need to know
• Memory management (IDisposable)
• ASP.Net Web Forms page lifecycle (Page
• events) handling & process flow
Exception
• (try/catch/finally) not just thru server controls)
HTML & CSS (raw,
• JavaScript (SharePoint Client-Side Object
• Model)
JavaScript (jQuery)
• JavaScript (KnockoutJS, Modernizr, etc)
• Regular Expressions (because SCIENCE)
14. 10 Things Every SharePoint Developer
Should Know
10.Whenever possible, avoid creating
custom Site Definitions
• Use Web Templates
#spdev101
15. 10 Things Every SharePoint Developer
Should Know
9. Solution packages are NOT side-by-side,
versioned deployments
#spdev101
16. 10 Things Every SharePoint Developer
Should Know
8. Web.config changes should be made in
code, not by hand
• SPWebConfigModification
#spdev101
17. 10 Things Every SharePoint Developer
Should Know
7. Sandbox limitations are not enforced at
compile time.
You need:
• Visual Studio 2010 SharePoint Power
Tools
• Office365 Sandbox FxCop Rules
#spdev101
18. 10 Things Every SharePoint Developer
Should Know
6. Out of the box master & layout pages
should never be modified
#spdev101
19. 10 Things Every SharePoint Developer
Should Know
5. JavaScript and Publishing Content Pages
do not play well together
OK (In a Content Editor Web Part):
<script type=“text/javascript">…</script>
Not OK (CEWP or page content):
<a href="#" onclick="javascript: …">link</a>
List data is always stripped of JavaScript
#spdev101
20. 10 Things Every SharePoint Developer
Should Know
4. Yes, you can have ASP.Net “yellow
screen of death” callstacks on errors
In your web.config file:
1. Set mode to “off” in the customErrors element
2. Set debug to “true” in the compilation element
3. Set CallStack to “true” in the SafeMode element
In code!
• SPWebConfigModification
#spdev101
21. 10 Things Every SharePoint Developer
Should Know
3. There is a right and very wrong way to
iterate through a SharePoint list
OK:
SPListItemsCollection items = myList.Items;
for (int i = 0; i < items.Count; i++)
{
// loop
}
Not OK:
foreach (SPListItem item in myList.Items)
{
// loop
}
#spdev101
22. 10 Things Every SharePoint Developer
Should Know
2. Many of the out-of-box web part classes
are inheritable (but not all)
You need: ILSpy
#spdev101
23. 10 Things Every SharePoint Developer
Should Know
1. The rules for proper disposal of
SharePoint objects isn’t cut & dry – but
there is help.
SPDisposeChe
(Write ck down)
this
#spdev101
24. How to get your code rejected by your
SharePoint Architecture Group
• Don’t dispose of your SPSite and SPWeb
(and related) objects properly
– The SPDisposeCheck utility is invaluable for
this
• Use
SPSecurity.RunWithElevatedPrivileges
when unnecessary or just plain badly
• Log errors to whatever’s handy at the time
• Make changes to the web.config file
without consideration for others #spdev101
25. Resources
• SPDisposeCheck Utility
– http://code.msdn.microsoft.com/SPDisposeCheck
• StackOverflow/SharePointOverflow
– http://stackoverflow.com
– http://sharepointoverflow.com
• Twitter (#SPHelp)
• Your local SharePoint User Group
#spdev101
30. Thanks for coming!
• Don’t forget your evaluations
• You can find me at:
• Blog: http://greghurlman.com
• Twitter: @ghurlman
• Email: greg@greghurlman.com
• Princeton Area SharePoint User Group
• SharePoint Saturday New York & New
Jersey
• Manticore Theatre @ PAX East
#spdev101