<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>To The 'Point : Development</title><link>http://blogs.technet.com/tothepoint/archive/tags/Development/default.aspx</link><description>Tags: Development</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Site Definitions and the SharePoint Solution Generator 2008 Part 2</title><link>http://blogs.technet.com/tothepoint/archive/2008/07/01/site-definitions-and-the-sharepoint-solution-generator-2008-part-2.aspx</link><pubDate>Tue, 01 Jul 2008 15:04:58 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3081636</guid><dc:creator>rofinney</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/tothepoint/comments/3081636.aspx</comments><wfw:commentRss>http://blogs.technet.com/tothepoint/commentrss.aspx?PostID=3081636</wfw:commentRss><description>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;In the first part of this series I gave a quick intro in to the tools and went through the initial planning stage about creating a site definition.&lt;/p&gt;  &lt;p&gt;Now the Next step…&lt;/p&gt;  &lt;h3&gt;Step 2: Installing the Software&lt;/h3&gt;  &lt;p&gt;Before any definitions can be created, you need to ensure that your environment is set up.&amp;#160; To use either version of the SharePoint Solution Generator you will need to have Visual Studio installed and also a copy of SharePoint.&amp;#160; This has to be installed on a server environment but van be either virtual or physical.&lt;/p&gt;  &lt;p&gt;The Solutions Generator is packaged as part of the Visual Studio 2008 SharePoint Extensions (currently at version 1.2) and this can be downloaded at &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=7BF65B28-06E2-4E87-9BAD-086E32185E68&amp;amp;displaylang=en" target="_blank"&gt;this Microsoft Site.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The system requirements for installation of the SharePoint extensions are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Supported Operating Systems: &lt;/b&gt;Windows Server 2003; Windows Server 2008 &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;The following is also required:&lt;/b&gt;       &lt;ul&gt;       &lt;li&gt;Windows SharePoint Services 3.0 (Basic installation only), or any product built on Windows SharePoint Services 3.0, such as Microsoft Office SharePoint Server 2007 &lt;/li&gt;        &lt;li&gt;Visual Studio 2008 (Standard Edition, Professional Edition, or Team System) &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;As an aside there are also some other parts of the WSS 3.0 Tools: Visual Studio 2008 Extensions that will be worth looking at later.&lt;/p&gt;  &lt;h3&gt;Step 3: Starting to build the the definition&lt;/h3&gt;  &lt;p&gt;Now that’s the software is installed we can get on with the definition.&lt;/p&gt;  &lt;p&gt;The joy with the Solution Generator is that you work in a nice friendly environment that you will probably already know – SharePoint!&amp;#160; What the the planning stage has given us is a list of content holders and columns that are eventually going to be in our New Site Definition which can be plugged into SharePoint.&amp;#160; The first stage will create a new site in SharePoint, add the additional content holders and columns highlighted in the planning and then package it up.&lt;/p&gt;  &lt;p&gt;The first step is to figure out which out-of-the-box site definition to use.&amp;#160; In most cases the Team Site template can be used as this gives a lot of the functionality around what the custom solution will also need (for example, an announcements list for posting about new entries).&amp;#160; Of course if this is to be a totally new type of site, then the Blank Site template may also be worth a look.&lt;/p&gt;  &lt;p&gt;I will assume that you know how to create a site, add content holders and columns.&lt;/p&gt;  &lt;p&gt;For the purpose of this walk through I’ve created a Team Site with a new Document Library called Official Documents with an added column, an Announcements List called Document Announce and an image on the homepage and an announcement added.&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;/p&gt;  &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;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/tothepoint/WindowsLiveWriter/SiteDefinitionsandtheSharePointSolutionG_BE70/demo%20site_2.jpg"&gt;&lt;img title="demo site" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="378" alt="demo site" src="http://blogs.technet.com/blogfiles/tothepoint/WindowsLiveWriter/SiteDefinitionsandtheSharePointSolutionG_BE70/demo%20site_thumb.jpg" width="600" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now that the site is created we can break out the tool that does all the magic.&lt;/p&gt;  &lt;p&gt;&lt;img title="solgenstart" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="447" alt="solgenstart" src="http://blogs.technet.com/blogfiles/tothepoint/WindowsLiveWriter/SiteDefinitionsandtheSharePointSolutionG_BE70/solgenstart_thumb.jpg" width="379" align="left" border="0" /&gt;Go to your start Menu and select the SharePoint Solution Generator 2008&lt;/p&gt;  &lt;p&gt;This will fire up a new window with two options available to you:&lt;a href="http://blogs.technet.com/blogfiles/tothepoint/WindowsLiveWriter/SiteDefinitionsandtheSharePointSolutionG_BE70/SSG2008%20splash_2.jpg"&gt;&lt;img title="SSG2008 splash" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="401" alt="SSG2008 splash" src="http://blogs.technet.com/blogfiles/tothepoint/WindowsLiveWriter/SiteDefinitionsandtheSharePointSolutionG_BE70/SSG2008%20splash_thumb.jpg" width="548" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Make sure that the Site Definition option is selected and press &lt;u&gt;N&lt;/u&gt;ext.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/tothepoint/WindowsLiveWriter/SiteDefinitionsandtheSharePointSolutionG_BE70/ssg2008stg2_2.jpg"&gt;&lt;img title="ssg2008stg2" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="380" alt="ssg2008stg2" src="http://blogs.technet.com/blogfiles/tothepoint/WindowsLiveWriter/SiteDefinitionsandtheSharePointSolutionG_BE70/ssg2008stg2_thumb.jpg" width="518" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;On the next screen you will need to select the radio button at the bottom and enter the web address to the SharePoint Site that you have created.&amp;#160; It is always worth keeping your site open in case you need to refer to is.&amp;#160; This will provide you with details for your site that you may need to refer to later.&amp;#160; After this has been entered, select the &lt;u&gt;N&lt;/u&gt;ext button.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; if you make an edit to the site whilst in the generator, it will not automatically be set up.&amp;#160; You will need to restart the Solution Generator.&lt;/p&gt;  &lt;p&gt;The next screen will provide you with the lists that can be taken as part of the Definition:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/tothepoint/WindowsLiveWriter/SiteDefinitionsandtheSharePointSolutionG_BE70/ssg2008sg3_2.jpg"&gt;&lt;img title="ssg2008sg3" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="376" alt="ssg2008sg3" src="http://blogs.technet.com/blogfiles/tothepoint/WindowsLiveWriter/SiteDefinitionsandtheSharePointSolutionG_BE70/ssg2008sg3_thumb.jpg" width="511" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The key thing to remember here is to bear in mind the base Site Template that your site has been modelled on.&amp;#160; For example, if a Team Site template is used you shouldn’t pick the lists that appear as part of this site by default.&amp;#160; When you come to deploy the solution you will find it will generate errors.&lt;/p&gt;  &lt;p&gt;In this case only the two custom lists (the Document Announce and Official Documents lists) are selected.&amp;#160; Once this is done, press &lt;u&gt;N&lt;/u&gt;ext.&lt;/p&gt;  &lt;p&gt;On the final screen you will need to provide the name for the solution.&amp;#160; Enter this and then press &lt;u&gt;N&lt;/u&gt;ext.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/tothepoint/WindowsLiveWriter/SiteDefinitionsandtheSharePointSolutionG_BE70/SSG2008stg4_2.jpg"&gt;&lt;img title="SSG2008stg4" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="380" alt="SSG2008stg4" src="http://blogs.technet.com/blogfiles/tothepoint/WindowsLiveWriter/SiteDefinitionsandtheSharePointSolutionG_BE70/SSG2008stg4_thumb.jpg" width="519" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The final screen will provide a Summary of the solution.&amp;#160; Check these and then press &lt;u&gt;F&lt;/u&gt;inish.&amp;#160; The Solution will then be generated and a link provided to view the files, and these look like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/tothepoint/WindowsLiveWriter/SiteDefinitionsandtheSharePointSolutionG_BE70/outputfiles_2.jpg"&gt;&lt;img title="outputfiles" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="222" alt="outputfiles" src="http://blogs.technet.com/blogfiles/tothepoint/WindowsLiveWriter/SiteDefinitionsandtheSharePointSolutionG_BE70/outputfiles_thumb.jpg" width="526" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;So there you have it!&amp;#160; Your generated solution that is now ready to be deployed.&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3081636" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/tothepoint/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.technet.com/tothepoint/archive/tags/Development/default.aspx">Development</category></item><item><title>Site Definitions and the SharePoint Solution Generator 2008 Part 1</title><link>http://blogs.technet.com/tothepoint/archive/2008/07/01/site-definitions-and-the-sharepoint-solution-generator-2008-part-1.aspx</link><pubDate>Tue, 01 Jul 2008 15:04:10 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3081634</guid><dc:creator>rofinney</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/tothepoint/comments/3081634.aspx</comments><wfw:commentRss>http://blogs.technet.com/tothepoint/commentrss.aspx?PostID=3081634</wfw:commentRss><description>&lt;p&gt;SharePoint dev is a pretty new thing for me and feels pretty much like jumping into the ocean and being told to pull an ocean liner to New York (including all the pitfalls that may be encountered, like Icebergs!) &lt;/p&gt;  &lt;p&gt;One thing I've had to do recently is to create a Site Definition for provisioning sites as part of a custom solution. A Site Definition is defined as: &lt;/p&gt;  &lt;p&gt;“A Site Definition is a group of files that reside on the Web server and that define a unique type of SharePoint site.” &lt;/p&gt;  &lt;p align="right"&gt;&lt;a href="http://office.microsoft.com/en-us/sharepointdesigner/HA101741451033.aspx#1" target="_blank"&gt;Office Web site&lt;/a&gt; &lt;/p&gt;  &lt;p align="left"&gt;What this means is that if you have a custom solution that needs a list or library defined across a number of sites then a site definition is for you! The Site Definition can contain a lot of configuration to make a site very specific – for example, site columns, an announcement, and content types. &lt;/p&gt;  &lt;p&gt;There can be a number of files that make up a site definition, but there are two key ones.&amp;#160; They are: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;feature.xml - defines a Feature and specifies the location of assemblies, files, dependencies, or properties that support the Feature. &lt;/li&gt;    &lt;li&gt;onet.xml - contain a reference to a Feature instance and default property values (i.e. all the lists that will make up the site). &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;For someone new to this can be quite daunting, especially, when you see the number of files, but also what is in the those files. There are methods to manually create these and update them and this is where the SharePoint Solution Generator steps in.&amp;#160; Some might call it cheating, but it certainly helps quickly generate Site Definitions.&amp;#160; Needless to say the first time I tried this tool, it still went horribly wrong! &lt;/p&gt;  &lt;p&gt;Thanks to a colleague (Thanks &lt;a href="http://blogs.msdn.com/martinkearn/default.aspx" target="_blank"&gt;Martin!&lt;/a&gt;) and a quick 101 I on the Solutions Generator, I got on track.&amp;#160; &lt;/p&gt;  &lt;p&gt;So, before you dive into the heady world of Site Def’s, you will need a few tools.&amp;#160; They are: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;A SharePoint environment (preferably a test environment! Your SharePoint Administrator may have something to say is you mess up their live environment…) &lt;/li&gt;    &lt;li&gt;Visual Studio 2008 (or 2005 if you haven’t upgraded yet) &lt;/li&gt;    &lt;li&gt;SharePoint Solution Generator 2008 (or 2005 if you are using the 2005 version of Visual Studio) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160; &lt;/p&gt;  &lt;h3&gt;Step 1: Planning&lt;/h3&gt;  &lt;p&gt;As with all dev work there needs to be some level of planning before getting going.&amp;#160; Thankfully if you do the planning in the correct way then it means that you can do an awful lot of the work up front. &lt;/p&gt;  &lt;p&gt;Firstly you need to decide what lists, columns and metadata you will need for your solution.&amp;#160; So if you were doing a forms solution you will need a Forms Library.&amp;#160; If you need a document library with some additional columns then you create a Doc Lib and add add some additional columns in.&amp;#160; It’s worth documenting this for further reference – especially if you are working as part of a team.&amp;#160; A table below can be quite handy template for this:    &lt;table cellspacing="0" cellpadding="2" width="369" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="93"&gt;&lt;strong&gt;Area&lt;/strong&gt; &lt;/td&gt;          &lt;td valign="top" width="120"&gt;&lt;strong&gt;Sub-area&lt;/strong&gt; &lt;/td&gt;          &lt;td valign="top" width="154"&gt;&lt;strong&gt;Details&lt;/strong&gt; &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="93"&gt;Type &lt;/td&gt;          &lt;td valign="top" width="120"&gt;&amp;#160; &lt;/td&gt;          &lt;td valign="top" width="154"&gt;E.g. Forms Library &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="93"&gt;Actual Name &lt;/td&gt;          &lt;td valign="top" width="120"&gt;&amp;#160; &lt;/td&gt;          &lt;td valign="top" width="154"&gt;e.g. salesrequest* &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="93"&gt;Display Name &lt;/td&gt;          &lt;td valign="top" width="120"&gt;&amp;#160; &lt;/td&gt;          &lt;td valign="top" width="154"&gt;e.g. Sales Request* &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="93"&gt;Description &lt;/td&gt;          &lt;td valign="top" width="120"&gt;&amp;#160; &lt;/td&gt;          &lt;td valign="top" width="154"&gt;e.g. library for storing forms &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="93"&gt;Additional columns &lt;/td&gt;          &lt;td valign="top" width="120"&gt;Actual name &lt;/td&gt;          &lt;td valign="top" width="154"&gt;e.g. submissiondate* &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="93"&gt;&amp;#160; &lt;/td&gt;          &lt;td valign="top" width="120"&gt;Display Name &lt;/td&gt;          &lt;td valign="top" width="154"&gt;e.g. Submission Date* &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="93"&gt;&amp;#160; &lt;/td&gt;          &lt;td valign="top" width="120"&gt;Description &lt;/td&gt;          &lt;td valign="top" width="154"&gt;e.g. Date of form submission &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="93"&gt;&amp;#160; &lt;/td&gt;          &lt;td valign="top" width="120"&gt;Required &lt;/td&gt;          &lt;td valign="top" width="154"&gt;e.g. Yes &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="93"&gt;&amp;#160; &lt;/td&gt;          &lt;td valign="top" width="120"&gt;Maximum number of Characters &lt;/td&gt;          &lt;td valign="top" width="154"&gt;e.g. 255 &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="93"&gt;&amp;#160; &lt;/td&gt;          &lt;td valign="top" width="120"&gt;Default Value &lt;/td&gt;          &lt;td valign="top" width="154"&gt;e.g. &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;* one important area with naming is that SharePoint names can be defined for the display name as well as an actual name.&amp;#160; It is important that the actual name format is constant with all areas of SharePoint.&amp;#160; So if there is a naming format standard that is no spaces, and no capitals then this must be followed.&amp;#160; The first time that an item is created within SharePoint the actual name is set.&amp;#160; Once this is in SharePoint it cannot be changed.&amp;#160; The display name can be though… for example: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/tothepoint/WindowsLiveWriter/SiteDefinitionsandtheSharePointSolutionG_DFE8/renaming_2.jpg"&gt;&lt;img title="Actual Name and Display Name Differences" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="147" alt="Actual Name and Display Name Differences" src="http://blogs.technet.com/blogfiles/tothepoint/WindowsLiveWriter/SiteDefinitionsandtheSharePointSolutionG_DFE8/renaming_thumb.jpg" width="450" align="left" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You can see that the Display Name is “Test Name” but in the Web Address the name of the list is testname.&amp;#160; If these were the same, the the Web Address would be Test%20Name.&amp;#160; This is the case for Content Holders as well as Columns. &lt;/p&gt;  &lt;p&gt;This is important especially when dealing with custom development.&amp;#160; If a workflow needs to be posting data to a field called testname but is reference as Test%20Name, then it will not work (GUID’s are a good way of managing these). So when creating these, it is also worth putting in the actual name first and then re-editing the name to be the display name(in C# code these are defined as DisplayName and Name). &lt;/p&gt;  &lt;p&gt;Next Post will start the building process.&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3081634" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/tothepoint/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.technet.com/tothepoint/archive/tags/Development/default.aspx">Development</category></item></channel></rss>