<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>David Jacobus</title>
        <link>http://geekswithblogs.net/djacobus/Default.aspx</link>
        <description>SharePoint Consultant</description>
        <language>en-US</language>
        <copyright>David Jacobus</copyright>
        <managingEditor>davidjacobus@hotmail.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <image>
            <title>David Jacobus</title>
            <url>http://geekswithblogs.net/images/RSS2Image.gif</url>
            <link>http://geekswithblogs.net/djacobus/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>SharePoint 2007 Site Definitions Part 5</title>
            <link>http://geekswithblogs.net/djacobus/archive/2008/10/28/126289.aspx</link>
            <description>&lt;p&gt;A blog that provides details but not a solution which compiles and installs is not very helpful as there is just too much going on and assumptions about the knowledge of the reader are impossible to make! I have tried to follow many step by step tutorials and had the final product fail because of missing steps or my understanding of the steps!&lt;/p&gt;
&lt;p&gt;If you add this solution, you must activate the feature stapler at the site collection level prior to creating a new site.  If you create a new site collection with this solution this step is unnecessary.  The solution provided is not exactly the same as described in the blog entries Part 2 - part 4.  But is close enough to validate the methodology.  I have had a few tell me that I could have added the web parts and lists in the onet.xml file:  I know!  But I have had problems with this file in the past and have decided that using code to add the web parts and lists as features is better and in my opinion easier than with xml in onet.xml.  Code gives me access to intellesence and I feel comfortable in code and in terror of all the xml that can crash an installation!!!!&lt;/p&gt;
&lt;p&gt;The code for this series of articles can be downloaded here:&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://cid-efb281df638e0168.skydrive.live.com/self.aspx/Public/BlogImages/ABCSiteDef.zip"&gt;ABCSite DownLoad&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=126289"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=126289" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/djacobus/aggbug/126289.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>David Jacobus</dc:creator>
            <guid>http://geekswithblogs.net/djacobus/archive/2008/10/28/126289.aspx</guid>
            <pubDate>Tue, 28 Oct 2008 15:47:33 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/djacobus/comments/126289.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/djacobus/archive/2008/10/28/126289.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/djacobus/comments/commentRss/126289.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/djacobus/services/trackbacks/126289.aspx</trackback:ping>
        </item>
        <item>
            <title>SharePoint 2007 Site Definitions Part 4</title>
            <link>http://geekswithblogs.net/djacobus/archive/2008/10/27/126267.aspx</link>
            <description>&lt;p&gt;ONET.XML&lt;/p&gt;
&lt;p&gt;Part 4 is the real difference in the site definition we are creating and those offered in many books and blogs. Except for the methodology I am presenting, I haven’t really offered anything new! Today we will start to deviate. The ONET.xml file is fairly simple when you get to using it a few times! The ONET.XML file I am proposing is very simple and not much in it except for some OOTB xml and the only thing that will change in this instance is adding all the features we have created and two more new features! Feature receiver for code and a feature stapler to add the code to the site definition. But first let’s complete the ONET.XML file:&lt;/p&gt;
&lt;p&gt;1. NavBars Element: We will keep the default quick launch so we will leave it alone!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart4_13520/clip_image002_2.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="158" alt="clip_image002" width="244" border="0" src="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart4_13520/clip_image002_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2. List Templates Element is empty we’ll leave the same&lt;/p&gt;
&lt;p&gt;3. Document Templates we will leave as is&lt;/p&gt;
&lt;p&gt;4. Configurations elements: We’ll only have one so we will delete all but the default configuration.&lt;/p&gt;
&lt;p&gt;a. We’ll keep &amp;lt;Configuration ID="0" Name="Default"&amp;gt;&lt;/p&gt;
&lt;p&gt;b. We’ll delete all the List Elements &lt;/p&gt;
&lt;p&gt;i. We are using features to provision the lists&lt;/p&gt;
&lt;p&gt;ii. The only configuration elements that are not empty is: Site Features and Web features&lt;/p&gt;
&lt;p&gt;iii. WOW! This is in concert with the whole idea around the feature solution framework!&lt;/p&gt;
&lt;p&gt;5. Modules elements: We will delete all the modules.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart4_13520/clip_image004_2.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="158" alt="clip_image004" width="244" border="0" src="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart4_13520/clip_image004_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;6. We will now add the features we have created to this point in the WSPBuilder project&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart4_13520/clip_image006_2.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="158" alt="clip_image006" width="244" border="0" src="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart4_13520/clip_image006_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;7. We are done with ONET.XML (Easy Huh!)&lt;/p&gt;
&lt;p&gt;a. But wait we haven’t provisioned default.aspx&lt;/p&gt;
&lt;p&gt;i. It is normally provisioned via a module in ONET.XML&lt;/p&gt;
&lt;p&gt;ii. We will provision it in a new feature!&lt;/p&gt;
&lt;p&gt;1. So we can add a feature receiver&lt;/p&gt;
&lt;p&gt;2. Add a new feature folder ABCTeamSiteRec&lt;/p&gt;
&lt;p&gt;a. Build the site Definition as we need the strong name&lt;/p&gt;
&lt;p&gt;b. Use Red Gate’s reflector to get the needed information&lt;/p&gt;
&lt;p&gt;c. Drop the DLL into Red Gate and get the needed information&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart4_13520/clip_image008_2.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="244" alt="clip_image008" width="198" border="0" src="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart4_13520/clip_image008_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;8. Add the following in the feature XML file:&lt;/p&gt;
&lt;p&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;Feature&lt;/p&gt;
&lt;p&gt;Id="{9F2EA305-7F72-40fd-A0E8-5353A5CBB251}"&lt;/p&gt;
&lt;p&gt;Title="A Company feature: SiteDefinition Activation"&lt;/p&gt;
&lt;p&gt;Description="SiteDefinition Activation"&lt;/p&gt;
&lt;p&gt;Version="1.0.0.0"&lt;/p&gt;
&lt;p&gt;Scope="Web"&lt;/p&gt;
&lt;p&gt;Hidden="TRUE"&lt;/p&gt;
&lt;p&gt;ImageUrl="ABCteamSite/company10.jpg"&lt;/p&gt;
&lt;p&gt;ReceiverAssembly="ABCSiteDef, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e540898f86a0353c"&lt;/p&gt;
&lt;p&gt;ReceiverClass="ABCSiteDef.FeatureReceiver" xmlns="http://schemas.microsoft.com/sharepoint/"&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;ElementManifests&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;ElementManifest Location="elements.xml"/&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;/ElementManifests&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;/Feature&amp;gt;&lt;/p&gt;
&lt;p&gt;9. Copy the default.aspx page to this feature folder and then add the following into the elements. Xml file:&lt;/p&gt;
&lt;p&gt;&amp;lt;?xml version="1.0" encoding="utf-8" ?&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;Elements xmlns="http://schemas.microsoft.com/sharepoint/"&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;Module Name="HomePage" Path="" Url=""&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;File&lt;/p&gt;
&lt;p&gt;Url="default.aspx"&lt;/p&gt;
&lt;p&gt;Type="Ghostable"&lt;/p&gt;
&lt;p&gt;IgnoreIfAlreadyExists="False"/&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;/Module&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;/Elements&amp;gt;&lt;/p&gt;
&lt;p&gt;10. Next we need to add the feature receiver add the following into a class at the root of the site not in the 12 hive&lt;/p&gt;
&lt;p&gt;using System;&lt;/p&gt;
&lt;p&gt;using System.Web;&lt;/p&gt;
&lt;p&gt;using System.Web.UI;&lt;/p&gt;
&lt;p&gt;using System.Web.UI.WebControls;&lt;/p&gt;
&lt;p&gt;using System.Web.UI.WebControls.WebParts;&lt;/p&gt;
&lt;p&gt;using Microsoft.SharePoint;&lt;/p&gt;
&lt;p&gt;using Microsoft.SharePoint.WebControls;&lt;/p&gt;
&lt;p&gt;using Microsoft.SharePoint.WebPartPages;&lt;/p&gt;
&lt;p&gt;using Microsoft.SharePoint.Navigation;&lt;/p&gt;
&lt;p&gt;using Microsoft.SharePoint.Administration;&lt;/p&gt;
&lt;p&gt;namespace ABCSiteDef&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;public class FeatureReceiver : SPFeatureReceiver&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;public override void FeatureActivated(SPFeatureReceiverProperties properties)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;SPWeb currentWeb = null;&lt;/p&gt;
&lt;p&gt;SPSite currentSite = null;&lt;/p&gt;
&lt;p&gt;object oParent = properties.Feature.Parent;&lt;/p&gt;
&lt;p&gt;if (properties.Feature.Parent is SPWeb)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;currentWeb = (SPWeb)oParent;&lt;/p&gt;
&lt;p&gt;currentSite = currentWeb.Site;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;else&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;currentSite = (SPSite)oParent;&lt;/p&gt;
&lt;p&gt;currentWeb = currentSite.RootWeb;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;// Get the web part manager&lt;/p&gt;
&lt;p&gt;SPLimitedWebPartManager mgr = currentWeb.GetLimitedWebPartManager("default.aspx", System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared);&lt;/p&gt;
&lt;p&gt;// Tasks List&lt;/p&gt;
&lt;p&gt;SPList list = currentWeb.Lists["Tasks"];&lt;/p&gt;
&lt;p&gt;// Instantiate the web part&lt;/p&gt;
&lt;p&gt;ListViewWebPart wp = new ListViewWebPart();&lt;/p&gt;
&lt;p&gt;wp.ZoneID = "Left";&lt;/p&gt;
&lt;p&gt;wp.ListName = list.ID.ToString("B").ToUpper();&lt;/p&gt;
&lt;p&gt;wp.ViewGuid = list.DefaultView.ID.ToString("B").ToUpper();&lt;/p&gt;
&lt;p&gt;mgr.AddWebPart(wp, "left", 1);&lt;/p&gt;
&lt;p&gt;mgr.AddWebPart(wp, "left", 1);&lt;/p&gt;
&lt;p&gt;// Calender List&lt;/p&gt;
&lt;p&gt;SPList list7 = currentWeb.Lists["Calendar"];&lt;/p&gt;
&lt;p&gt;// Instantiate the web part&lt;/p&gt;
&lt;p&gt;ListViewWebPart wp7 = new ListViewWebPart();&lt;/p&gt;
&lt;p&gt;wp7.ZoneID = "Left";&lt;/p&gt;
&lt;p&gt;wp7.ListName = list7.ID.ToString("B").ToUpper();&lt;/p&gt;
&lt;p&gt;wp7.ViewGuid = list7.DefaultView.ID.ToString("B").ToUpper();&lt;/p&gt;
&lt;p&gt;mgr.AddWebPart(wp7, "left", 3); &lt;/p&gt;
&lt;p&gt;mgr.AddWebPart(wp7, "left", 3);&lt;/p&gt;
&lt;p&gt;// Internal Contacts List&lt;/p&gt;
&lt;p&gt;SPList list2 = currentWeb.Lists["Internal Contacts"];&lt;/p&gt;
&lt;p&gt;// Instantiate the web part&lt;/p&gt;
&lt;p&gt;ListViewWebPart wp2 = new ListViewWebPart();&lt;/p&gt;
&lt;p&gt;wp2.ZoneID = "Right";&lt;/p&gt;
&lt;p&gt;wp2.ListName = list2.ID.ToString("B").ToUpper();&lt;/p&gt;
&lt;p&gt;wp2.ViewGuid = list2.DefaultView.ID.ToString("B").ToUpper();&lt;/p&gt;
&lt;p&gt;mgr.AddWebPart(wp2, "Right", 3);&lt;/p&gt;
&lt;p&gt;// Announcements List&lt;/p&gt;
&lt;p&gt;SPList list3 = currentWeb.Lists["Announcements"];&lt;/p&gt;
&lt;p&gt;// Instantiate the web part&lt;/p&gt;
&lt;p&gt;ListViewWebPart wp3 = new ListViewWebPart();&lt;/p&gt;
&lt;p&gt;wp3.ZoneID = "Right";&lt;/p&gt;
&lt;p&gt;wp3.ListName = list3.ID.ToString("B").ToUpper();&lt;/p&gt;
&lt;p&gt;wp3.ViewGuid = list3.DefaultView.ID.ToString("B").ToUpper();&lt;/p&gt;
&lt;p&gt;mgr.AddWebPart(wp3, "Right", 4);&lt;/p&gt;
&lt;p&gt;// Links List&lt;/p&gt;
&lt;p&gt;SPList list4 = currentWeb.Lists["Links"];&lt;/p&gt;
&lt;p&gt;// Instantiate the web part&lt;/p&gt;
&lt;p&gt;ListViewWebPart wp4 = new ListViewWebPart();&lt;/p&gt;
&lt;p&gt;wp4.ZoneID = "Right";&lt;/p&gt;
&lt;p&gt;wp4.ListName = list4.ID.ToString("B").ToUpper();&lt;/p&gt;
&lt;p&gt;wp4.ViewGuid = list4.DefaultView.ID.ToString("B").ToUpper();&lt;/p&gt;
&lt;p&gt;mgr.AddWebPart(wp4, "Right", 5);&lt;/p&gt;
&lt;p&gt;currentWeb.Update();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;public override void FeatureDeactivating(SPFeatureReceiverProperties properties)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;/* no op */&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;public override void FeatureInstalled(SPFeatureReceiverProperties properties)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;/* no op */&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;public override void FeatureUninstalling(SPFeatureReceiverProperties properties)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;/* no op */&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart4_13520/clip_image010_2.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="158" alt="clip_image010" width="244" border="0" src="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart4_13520/clip_image010_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;11. Next we need to add a feature stapler so the code and thus the web parts will be added to default.aspx when the site is provisioned!&lt;/p&gt;
&lt;p&gt;12. Add A new feature folder to the WSPBuilder solution&lt;/p&gt;
&lt;p&gt;a. Name it ABCTeamSiteRecStapler&lt;/p&gt;
&lt;p&gt;i. Add the following feature code:&lt;/p&gt;
&lt;p&gt;&amp;lt;?xml version="1.0" encoding="utf-8" ?&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;Feature Id="{5FAFFFF9-50BF-4fea-BC70-7AF3266AFC4E}"    note: make sure the guid points to the feature receiver&lt;/p&gt;
&lt;p&gt;Title="$Resources:MultiLangStaplingFeatureName"&lt;/p&gt;
&lt;p&gt;Description="$Resources:MultiLangstaplingFeatureDescription"&lt;/p&gt;
&lt;p&gt;Version="12.0.0.0"&lt;/p&gt;
&lt;p&gt;Scope="Site"&lt;/p&gt;
&lt;p&gt;xmlns="http://schemas.microsoft.com/sharepoint/"&lt;/p&gt;
&lt;p&gt;DefaultResourceFile="_Res"&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;ElementManifests&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;ElementManifest Location="elements.xml"/&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;/ElementManifests&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;/Feature&amp;gt;&lt;/p&gt;
&lt;p&gt;13. Add the following elements.xml file&lt;/p&gt;
&lt;p&gt;&amp;lt;Elements xmlns="http://schemas.microsoft.com/sharepoint/"&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;FeatureSiteTemplateAssociation &lt;/p&gt;
&lt;p&gt;Id="{3D6DC874-154C-4e3d-AE0E-9A3F21D69136}" &lt;/p&gt;
&lt;p&gt;TemplateName="ABCTeamSite#0" /&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;/Elements&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart4_13520/clip_image012_2.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="158" alt="clip_image012" width="244" border="0" src="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart4_13520/clip_image012_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=126267"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=126267" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/djacobus/aggbug/126267.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>David Jacobus</dc:creator>
            <guid>http://geekswithblogs.net/djacobus/archive/2008/10/27/126267.aspx</guid>
            <pubDate>Tue, 28 Oct 2008 04:59:02 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/djacobus/comments/126267.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/djacobus/archive/2008/10/27/126267.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/djacobus/comments/commentRss/126267.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/djacobus/services/trackbacks/126267.aspx</trackback:ping>
        </item>
        <item>
            <title>SharePoint 2007 Site Definitions Part 3</title>
            <link>http://geekswithblogs.net/djacobus/archive/2008/10/27/126265.aspx</link>
            <description>&lt;p&gt;List Definitions Using SharePoint Solutions Generator 2008&lt;/p&gt;  &lt;p&gt;1. Start SharePoint Solutions Generator&lt;/p&gt;  &lt;p&gt;a. Create List Definition&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart3_120DD/clip_image002_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="192" alt="clip_image002" src="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart3_120DD/clip_image002_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart3_120DD/clip_image004_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="158" alt="clip_image004" src="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart3_120DD/clip_image004_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart3_120DD/clip_image006_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="179" alt="clip_image006" src="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart3_120DD/clip_image006_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;b. The two custom lists are Internal Contact (Custom list) and Tasks (Custom View)&lt;/p&gt;  &lt;p&gt;c. Hit defaults’ to finish&lt;/p&gt;  &lt;p&gt;d. VS 2008 Solutions Generator will provide a link to the generated solution&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart3_120DD/clip_image008_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="176" alt="clip_image008" src="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart3_120DD/clip_image008_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;2. Create two Feature folders in the WSPBuilder Solution&lt;/p&gt;  &lt;p&gt;a. Tasks&lt;/p&gt;  &lt;p&gt;b. InternalContacts&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart3_120DD/clip_image010_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="158" alt="clip_image010" src="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart3_120DD/clip_image010_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;3. Copy the two folders created by the Solutions Generator into these folders&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart3_120DD/clip_image012_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="158" alt="clip_image012" src="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart3_120DD/clip_image012_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;4. Notice the custom view in the tasks list definition&lt;/p&gt;  &lt;p&gt;a. In addition, The ListDefinition.xml file.&lt;/p&gt;  &lt;p&gt;b. We will use this to create the feature so:&lt;/p&gt;  &lt;p&gt;i. Move this to the next folder up on both lists&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart3_120DD/clip_image014_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="159" alt="clip_image014" src="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart3_120DD/clip_image014_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;5. Next we will create the feature files&lt;/p&gt;  &lt;p&gt;a. Add a new xml file to the feature folder on both lists&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart3_120DD/clip_image016_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="150" alt="clip_image016" src="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart3_120DD/clip_image016_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;b. Copy the following xml into the file:&lt;/p&gt;  &lt;p&gt;&amp;lt;?xml version="1.0"?&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;Feature Id="{770CB6F9-FC52-4041-872E-83E9685B2F7A}" &lt;/p&gt;  &lt;p&gt;Title="Internal Contacts" &lt;/p&gt;  &lt;p&gt;Description="" &lt;/p&gt;  &lt;p&gt;Version="1.0.0.0" &lt;/p&gt;  &lt;p&gt;Scope="Web" &lt;/p&gt;  &lt;p&gt;ImageUrl="ABCteamSite/company1.jpg"&lt;/p&gt;  &lt;p&gt;xmlns="http://schemas.microsoft.com/sharepoint/"&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;ElementManifests&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;ElementManifest Location="ListDefinition.xml" /&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;/ElementManifests&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;/Feature&amp;gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart3_120DD/clip_image018_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="158" alt="clip_image018" src="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart3_120DD/clip_image018_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;c. Do the same for the Tasks list&lt;/p&gt;  &lt;p&gt;d. Be sure to change the GUID on the list feature&lt;/p&gt;  &lt;p&gt;e. The image should be the same but with a different number for each feature.&lt;/p&gt;  &lt;p&gt;i. I use a small transparent gif of the company logo&lt;/p&gt;  &lt;p&gt;ii. If I have 10 features I will have 10 images the same just numbered sequentially&lt;/p&gt;  &lt;p&gt;iii. The reason is if someone deactivates a feature all the other features will show with a broken image if they all use the same image (Experience)&lt;/p&gt;  &lt;p&gt;6. The List definition File will be the same that was created by the Solution generator&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart3_120DD/clip_image020_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="158" alt="clip_image020" src="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart3_120DD/clip_image020_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart3_120DD/clip_image022_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="158" alt="clip_image022" src="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart3_120DD/clip_image022_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;7. The real workhorse of the list definition is the schema.xml file and is beyond the scope of this blog entry!&lt;/p&gt;  &lt;p&gt;8. Now we need to create list instance features for each list in the site:&lt;/p&gt;  &lt;p&gt;a. 6 lists&lt;/p&gt;  &lt;p&gt;i. Tasks&lt;/p&gt;  &lt;p&gt;ii. Internal Contacts&lt;/p&gt;  &lt;p&gt;iii. Calendar&lt;/p&gt;  &lt;p&gt;iv. Links&lt;/p&gt;  &lt;p&gt;v. Announcements&lt;/p&gt;  &lt;p&gt;vi. Team Discussions&lt;/p&gt;  &lt;p&gt;b. They will all be similar so a copy and paste would be appropriate&lt;/p&gt;  &lt;p&gt;c. The custom lists instances will have their feature GUID exposed in their elements.xml file while list instance based upon built in list templates will reference the built in feature GUIDS.&lt;/p&gt;  &lt;p&gt;d. Custom Lists (Tasks)&lt;/p&gt;  &lt;p&gt;9. Built-in List (Announcements)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart3_120DD/clip_image024_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="158" alt="clip_image024" src="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart3_120DD/clip_image024_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart3_120DD/clip_image026_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="158" alt="clip_image026" src="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart3_120DD/clip_image026_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;a. Notice the feature ID in the list instance reflects a built-in List feature ID: 0BFEA71-D1CE-42de-9C63-A44004CE0104&lt;/p&gt;  &lt;p&gt;b. They are all the same until the last three digits in this case 104&lt;/p&gt;  &lt;p&gt;10. Custom List Internal Contacts List template feature&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart3_120DD/clip_image028_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="158" alt="clip_image028" src="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart3_120DD/clip_image028_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart3_120DD/clip_image030_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="158" alt="clip_image030" src="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart3_120DD/clip_image030_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;a. Notice that the list instance points to the same feature as the list template&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=126265"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=126265" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/djacobus/aggbug/126265.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>David Jacobus</dc:creator>
            <guid>http://geekswithblogs.net/djacobus/archive/2008/10/27/126265.aspx</guid>
            <pubDate>Tue, 28 Oct 2008 03:32:45 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/djacobus/comments/126265.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/djacobus/archive/2008/10/27/126265.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/djacobus/comments/commentRss/126265.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/djacobus/services/trackbacks/126265.aspx</trackback:ping>
        </item>
        <item>
            <title>SharePoint 2007 Site Definitions Part 2</title>
            <link>http://geekswithblogs.net/djacobus/archive/2008/10/27/126259.aspx</link>
            <description>&lt;p&gt;I spend some time over the last weeks reverse engineering &lt;a href="http://geekswithblogs.net/rfoster/archive/2008/06/12/122823.aspx"&gt;Windows SharePoint Services 3.0 Tools: Visual Studio 2008 Extensions, Version 1.2 &lt;/a&gt;and with the help of a few bloggers who really did much of the investigations I just validated them. I’ll allude to these as we develop the site definition.&lt;/p&gt;  &lt;p&gt;In WSPBuilder when creating a project the tool behind the scenes parses the 12 hive and creates entries in a solution manifest file corresponding to these entries. I won’t go into the details and they aren’t needed just use the tool and thank the developers for the effort, just understand that solution development was much harder before these tools were developed!&lt;/p&gt;  &lt;p&gt;Let’s get started:&lt;/p&gt;  &lt;p&gt;1. Create a new WSP Project:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart2_F41B/clip_image002_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="176" alt="clip_image002" src="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart2_F41B/clip_image002_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;2. The VS 2008 WSPBuilder Start:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart2_F41B/clip_image004_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="169" alt="clip_image004" src="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart2_F41B/clip_image004_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;3. Create the 12 hive folders you’ll need:&lt;/p&gt;  &lt;p&gt;a. Template&lt;/p&gt;  &lt;p&gt;i. 1033&lt;/p&gt;  &lt;p&gt;ii. Features&lt;/p&gt;  &lt;p&gt;iii. Images&lt;/p&gt;  &lt;p&gt;iv. Layouts&lt;/p&gt;  &lt;p&gt;v. SiteTemplates&lt;/p&gt;  &lt;p&gt;vi. XML&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart2_F41B/clip_image006_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="165" alt="clip_image006" src="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart2_F41B/clip_image006_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Site Definition&lt;/h3&gt;  &lt;p&gt;The site definition I am going to create is based upon a custom team site developed in the UI. I am going to go through the process of the site definition development in WSPBuilder. Here is a screen shot of the proposed site definition:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart2_F41B/clip_image008_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="165" alt="clip_image008" src="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart2_F41B/clip_image008_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;What we have is 5 lists of which two are custom with views. The onet.xml file will have no custom navigation and the default.aspx page will have some custom list views on the page. (Caveat: We could build this site definition in its entirety with the SharePoint Solution generator 2008! We are not going to so I can demonstrate how to create a complete site definition thus useable on other site definition types!)&lt;/p&gt;  &lt;p&gt;1. Lets add the fragments we will need to do a site definition:&lt;/p&gt;  &lt;p&gt;a. Create a webtempABCTeamSite.xml file under the 1033 folder: Subfolder XML&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart2_F41B/clip_image010_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="150" alt="clip_image010" src="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart2_F41B/clip_image010_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart2_F41B/clip_image012_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="165" alt="clip_image012" src="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart2_F41B/clip_image012_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;2. Copy the following fragment into this file:&lt;/p&gt;  &lt;p&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;Templates&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;Template Name="ABCTeamSite" ID="10002"&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;Configuration&lt;/p&gt;  &lt;p&gt;ID="0"&lt;/p&gt;  &lt;p&gt;Title="ABCTeamSite"&lt;/p&gt;  &lt;p&gt;Description="ABC Team Site"&lt;/p&gt;  &lt;p&gt;Hidden="FALSE"&lt;/p&gt;  &lt;p&gt;ImageUrl="/_layouts/images/ABCTeamSite/ABCTeamSite.png"&lt;/p&gt;  &lt;p&gt;DisplayCategory="ABCCustom" /&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;/Template&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;/Templates&amp;gt;&lt;/p&gt;  &lt;p&gt;3. Create a folder beneath the images folder: ABCTeamsite and add an image of what the site will look like:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart2_F41B/clip_image014_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="156" alt="clip_image014" src="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart2_F41B/clip_image014_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;4. Copy the Team Site (STS) folder into the siteTemplates folder and rename it to ABCTeamSite&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart2_F41B/clip_image016_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="165" alt="clip_image016" src="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart2_F41B/clip_image016_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;5. Get rid of defaultdws.aspx&lt;/p&gt;  &lt;p&gt;6. Develop custom lists using the UI&lt;/p&gt;  &lt;p&gt;a. If using content types develop the content type feature using the UI&lt;/p&gt;  &lt;p&gt;i. Use MOSS Feature Generator MFG (CodePlex: &lt;a href="http://www.codeplex.com/mossfeaturegenerator"&gt;http://www.codeplex.com/mossfeaturegenerator&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;1. To generate the content type feature files&lt;/p&gt;  &lt;p&gt;2. I don’t use MFG for List Definitions as I found some fidelity problems!&lt;/p&gt;  &lt;p&gt;b. Use SharePoint solution Generator 2008 to develop the custom list definitions&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart2_F41B/clip_image018_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="165" alt="clip_image018" src="http://geekswithblogs.net/images/geekswithblogs_net/djacobus/WindowsLiveWriter/SharePoint2007SiteDefinitionsPart2_F41B/clip_image018_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=126259"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=126259" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/djacobus/aggbug/126259.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>David Jacobus</dc:creator>
            <guid>http://geekswithblogs.net/djacobus/archive/2008/10/27/126259.aspx</guid>
            <pubDate>Tue, 28 Oct 2008 00:21:49 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/djacobus/comments/126259.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/djacobus/archive/2008/10/27/126259.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/djacobus/comments/commentRss/126259.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/djacobus/services/trackbacks/126259.aspx</trackback:ping>
        </item>
        <item>
            <title>SharePoint 2007 Site Definitions Part 1 (Basics)</title>
            <link>http://geekswithblogs.net/djacobus/archive/2008/10/27/126257.aspx</link>
            <description>&lt;div style="MARGIN: 0in 0in 10pt"&gt;&lt;font size="2"&gt;For the last 1 1/2 years I have browsed and used content from hundreds of blogs that I have researched in the performance of my position as a SharePoint developer. I have needed to do this as SharePoint 2007 has many books which have shallow dives into the API only a few offer insights into “Best Practices” and the best way to accomplish SharePoint customizations. This blog entry is some pay back for all those bloggers whom I have used to ensure successful engagements.&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 10pt"&gt;&lt;font size="2"&gt;In the last 16 months I have had 4 major clients and a few smaller ones and for a few of the engagements I have found the need to provide the client with a site definition for a common division/department site. In the beginning I used a couple of books which provided basic instructions on how to copy the SharePoint team site and configure it to meet specification. I was able to make it work but I knew that I had to spend too much time with the modifications to list definitions, and that humongous onet.xml file! &lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 10pt"&gt;&lt;font size="2"&gt;When I first entered the SharePoint arena I did most all customizations through XML files: Content Types, etc. After my 2&lt;sup&gt;nd&lt;/sup&gt; client I realized that although XML can get the job done it is ugly and exacting! Case sensitivity and a misspelled word could bring down a SharePoint installation especially when dealing with content types. Although XML is still a requirement much of the hassle can be alleviated with a combination of XML and code (C#). Therefore, this post is my take on best practices for Site Definitions as a combination of XML and code (C#) and a methodology to use in the development of site definitions.&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 10pt"&gt;&lt;font size="2"&gt;Consultants/Developers need to have a common delivery mechanism of SharePoint Artifacts to the client. Two CodePlex tools are the mainstream tools used in the industry: STSDev and WSPBuilder. I have used both and they are time saving and first class tools for SharePoint solution files. I am a firm believer that as a developer we only deliver solutions to the client that can be installed onto client servers either directly onto the production server(s) or through the development, test, and production sequence. I have worked with some who will deliver direct SharePoint Designer solutions (me in the beginning) that are not repeatable installations but repeatable configuration solutions, they are fraught with errors!&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 10pt"&gt;&lt;font size="2"&gt;For this blog entry I will focus on a solution built with WSPBuilder but I use STSdev in much of my work! Okay, let’s get one false impression that is out on the web thrown out! &lt;/font&gt;&lt;a title="Title of this entry." href="http://geekswithblogs.net/rfoster/archive/2008/06/12/122823.aspx"&gt;&lt;span style="COLOR: windowtext; TEXT-DECORATION: none; text-underline: none"&gt;&lt;font size="2"&gt;Windows SharePoint Services 3.0 Tools: Visual Studio 2008 Extensions, Version 1.2 &lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;font size="2"&gt;is not a POS especially the SharePoint Solution Generator. In the 2005 version I wouldn’t use it because of all the GUID attachments to list names, etc which made the solution ugly and incomprehensible to the end user. But in VS 2008 the Solution Generator is a first class tool! I tested it on a custom teams site with 11 custom lists, custom list views and with custom dispform’s. The solution replicated a STP with full fidelity!   However, Microsoft put much of the under pinning’s in hidden features and custom build processes! So if you are going to use it for site definitions other than a custom team site then a reproducible solution is needed and thus the purpose of this blog entry!&lt;/font&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=126257"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=126257" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/djacobus/aggbug/126257.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>David Jacobus</dc:creator>
            <guid>http://geekswithblogs.net/djacobus/archive/2008/10/27/126257.aspx</guid>
            <pubDate>Mon, 27 Oct 2008 23:36:05 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/djacobus/comments/126257.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/djacobus/archive/2008/10/27/126257.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/djacobus/comments/commentRss/126257.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/djacobus/services/trackbacks/126257.aspx</trackback:ping>
        </item>
    </channel>
</rss>