<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
    <channel>
        <title>SharePoint Brain Freeze</title>
        <link>http://www.sharepointbrainfreeze.com/Default.aspx</link>
        <description>Josh Carlisle's Blog on SharePoint, Community, and other miscellaneous ramblings.</description>
        <language>en-US</language>
        <copyright>Joshua Carlisle</copyright>
        <generator>Subtext Version 2.5.0.0</generator>
        <image>
            <title>SharePoint Brain Freeze</title>
            <url>http://www.sharepointbrainfreeze.com/images/RSS2Image.gif</url>
            <link>http://www.sharepointbrainfreeze.com/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/SharepointBrainFreeze" /><feedburner:info uri="sharepointbrainfreeze" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
            <title>Presenting at Asheville NC SharePoint &amp;amp; .Net User Group 1/20/2011</title>
            <link>http://feedproxy.google.com/~r/SharepointBrainFreeze/~3/ZrgzmRBZazU/presenting-at-asheville-nc-sharepoint-amp-net-user-group-1202011.aspx</link>
            <description>&lt;p&gt;I’m very much looking forward to head out to Asheville NC tomorrow to present to both the Asheville SharePoint and .Net User Groups. For more information on time &amp;amp; place please checkout &lt;a title="http://wncdotnet.com/" href="http://wncdotnet.com/"&gt;http://wncdotnet.com/&lt;/a&gt; or &lt;a href="http://www.wncsug.com/default.aspx"&gt;http://www.wncsug.com/default.aspx&lt;/a&gt; .&lt;/p&gt;  &lt;p&gt;Because of the diverse audience of SharePoint and .Net developers I will be actually combining a couple of presentations topics that include an &lt;em&gt;Introduction to Visual Studio 2010 and SharePoint 2010&lt;/em&gt;  and &lt;em&gt;Data Access with SharePoint 2010&lt;/em&gt;. Whether you’ve never had the opportunity to develop against SharePoint or your looking to discover some of the new features in SharePoint 2010 data access , such as LINQ to SharePoint and the Client Object Model, this presentation should include some valuable information for you.&lt;/p&gt;  &lt;p&gt;On a side note I’m going to be spending an extra day in town so I can do some hiking at Pisgah National Forest on Friday (thinking John Rock and\or Looking Glass Rock – depending on trail conditions). If your into hiking (or even better winter hikes) and you want an excuse to get out of the office drop me a note and maybe we can coordinate.&lt;/p&gt;  &lt;p&gt;So please join us! Looking forward to seeing everyone.&lt;/p&gt;&lt;img src="http://www.sharepointbrainfreeze.com/aggbug/74.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/SharepointBrainFreeze/~4/ZrgzmRBZazU" height="1" width="1"/&gt;</description>
            <dc:creator>Joshua Carlisle</dc:creator>
            <guid isPermaLink="false">http://www.sharepointbrainfreeze.com/archive/2011/01/19/presenting-at-asheville-nc-sharepoint-amp-net-user-group-1202011.aspx</guid>
            <pubDate>Wed, 19 Jan 2011 16:20:13 GMT</pubDate>
            <comments>http://www.sharepointbrainfreeze.com/archive/2011/01/19/presenting-at-asheville-nc-sharepoint-amp-net-user-group-1202011.aspx#feedback</comments>
            <wfw:commentRss>http://www.sharepointbrainfreeze.com/comments/commentRss/74.aspx</wfw:commentRss>
            <trackback:ping>http://www.sharepointbrainfreeze.com/services/trackbacks/74.aspx</trackback:ping>
        <feedburner:origLink>http://www.sharepointbrainfreeze.com/archive/2011/01/19/presenting-at-asheville-nc-sharepoint-amp-net-user-group-1202011.aspx</feedburner:origLink></item>
        <item>
            <title>Slides and Demos from SharePoint Saturday Virginia Beach 2011</title>
            <link>http://feedproxy.google.com/~r/SharepointBrainFreeze/~3/4E1A0kF94T8/slides-and-demos-from-sharepoint-saturday-virginia-beach-2011.aspx</link>
            <description>&lt;p&gt;Thanks to everyone who attended my two sessions at SharePoint Saturday Virginia beach. A really great event, really amazing how many folks showed up on a colder winter weather warning day to learn something about SharePoint! A special thanks to Susan Lennon for putting together such a great event, yet again! I know she’ll say she had lots of help but I say a bridge won’t hold up without a keystone and Susan Lennon was the keystone for this event, big thanks Susan!&lt;/p&gt;  &lt;p&gt;As promised I have updated my demo code and slides for my two sessions. They are both available at:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cid-5a5344bf3052f19d.office.live.com/embedicon.aspx/Public/Josh%20Carlisle%20SPSVB%20SharePoint%202010%20and%20Windows%20Phone%207.zip"&gt;SharePoint &amp;amp; Windows Phone 7&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cid-5a5344bf3052f19d.office.live.com/embedicon.aspx/Public/Josh%20Carlisle%20SPSVB%20SharePoint%202010%20Data%20Access.zip"&gt;SharePoint 2010 Data Access – A Developer’s Primer&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;A couple quick notes about the sample code provided in the download:   &lt;br /&gt;    &lt;br /&gt;- There is an included wsp package provided that installs the lists used by the demos. Activate the Josh Carlisle Demo Plumbing feature.    &lt;br /&gt;    &lt;br /&gt;- Both demos have hard coded urls to SharePoint. You should update those url’s to point to your environment.    &lt;br /&gt;    &lt;br /&gt;- The Windows Phone 7 demonstration requires a environment with claims authentication. For further information on how to setup claims  authentication using the LDAP membership provider please check this &lt;a href="http://blogs.msdn.com/b/alimaz/archive/2009/10/30/configuring-fba-in-sharepoint-server-2010-beta-2.aspx"&gt;MSDN Blog Post&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt; If you have any feedback or questions on the demos or the material I presented on I welcome any feedback.&lt;/p&gt;&lt;img src="http://www.sharepointbrainfreeze.com/aggbug/73.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/SharepointBrainFreeze/~4/4E1A0kF94T8" height="1" width="1"/&gt;</description>
            <dc:creator>Joshua Carlisle</dc:creator>
            <guid isPermaLink="false">http://www.sharepointbrainfreeze.com/archive/2011/01/10/slides-and-demos-from-sharepoint-saturday-virginia-beach-2011.aspx</guid>
            <pubDate>Mon, 10 Jan 2011 19:29:04 GMT</pubDate>
            <comments>http://www.sharepointbrainfreeze.com/archive/2011/01/10/slides-and-demos-from-sharepoint-saturday-virginia-beach-2011.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://www.sharepointbrainfreeze.com/comments/commentRss/73.aspx</wfw:commentRss>
            <trackback:ping>http://www.sharepointbrainfreeze.com/services/trackbacks/73.aspx</trackback:ping>
        <feedburner:origLink>http://www.sharepointbrainfreeze.com/archive/2011/01/10/slides-and-demos-from-sharepoint-saturday-virginia-beach-2011.aspx</feedburner:origLink></item>
        <item>
            <title>Raleigh Code Camp and SharePoint Saturday Richmond and Virginia Beach</title>
            <category>SharePoint Community</category>
            <category>SharePoint Saturday</category>
            <category>UserGroup</category>
            <category>SharePoint</category>
            <category>SharePoint 2010</category>
            <link>http://feedproxy.google.com/~r/SharepointBrainFreeze/~3/0th9fj6mlE0/raleigh-code-camp-and-sharepoint-saturday-richmond-and-virginia-beach.aspx</link>
            <description>&lt;p&gt;Are you a .Net developer and live in the Raleigh Durham area? Are you going to the Code Camp this Saturday? No???? WHY NOT!! Code camps are one of the best events for the free exchange of technical knowledge, networking, and just general geek goodness. More details can be found at &lt;a href="http://www.codecamp.org"&gt;http://www.codecamp.org&lt;/a&gt; and you can register for the event at &lt;a href="http://rducodecamp10.eventbrite.com/"&gt;http://rducodecamp10.eventbrite.com/&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I will be presenting a session on SharePoint 2010 Development – Now With A Great Cherry Taste! This presentation is targeted for developers who have little or no experience with SharePoint and may have been scared off by the previous horror stories of SharePoint development. The developer story is vastly improved in SharePoint 2010 – come check out my session and see if I change your mind &lt;img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.sharepointbrainfreeze.com/images/www_sharepointbrainfreeze_com/Windows-Live-Writer/Raleigh-Code-Camp-and-SharePoint-Saturda_E4F3/wlEmoticon-smile_2.png" /&gt;. I’m currently scheduled for the last session of the day so before you head off early, stick around for some swag and learn a little bit about SharePoint development. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;SharePoint 2010 Development - Now With a Great Cherry Flavor     &lt;br /&gt;&lt;/strong&gt;SharePoint development has often been a tough pill to both swallow and sell. With SharePoint 2010 that pill has become much smaller and with less aftertaste! SharePoint 2010 is now a first class citizen in Visual Studio 2010 and fully supports a greatly simplified development cycle with SharePoint project and item types, designers, "f5" debugging support, automatic package generation and much more. Additionally the OS requirements have been lifted and Windows 7 and Vista are now supported as a development platform. In this session we will provide an overview of the new functionality available in Visual Studio for SharePoint 2010 development and we'll also provide an overview of some of the new tools available to the developer such as the Developer Dashboard.&lt;/p&gt;  &lt;p&gt;Additionally I’ll be speaking at a couple upcoming SharePoint Saturday events, my personal favorite community event but I admit to being a little biased.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.sharepointsaturday.org/richmond/default.aspx"&gt;&lt;strong&gt;SharePoint Saturday Richmond&lt;/strong&gt;&lt;/a&gt; - December 4th, 2010    &lt;br /&gt;&lt;a href="http://www.sharepointsaturday.org/virginiabeach/default.aspx"&gt;&lt;strong&gt;SharePoint Saturday Virginia Beach&lt;/strong&gt;&lt;/a&gt; - January 8, 2011&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Data Access with SharePoint 2010 – A Developer’s Primer     &lt;br /&gt;&lt;/strong&gt;SharePoint 2007 only provided a couple core methods for accessing SharePoint list data including the SharePoint Object Model and SharePoint ASMX Web Services. In this session we’ll be exploring the new data access methods including Linq to SharePoint, REST Services, and the Client Object Model for Javascript, Silverlight, and Managed Code.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Windows Phone 7 and SharePoint 2010 – Better Together     &lt;br /&gt;&lt;/strong&gt;Windows Phone 7 is Microsoft’s latest and complete rewrite of its mobile operating system. In this session we’ll be covering the basics of developing a rich user interface solution for SharePoint and Windows Phone 7 using Silverlight and SharePoint REST Services.&lt;/p&gt;  &lt;p&gt;Hope to see you there!&lt;/p&gt;&lt;img src="http://www.sharepointbrainfreeze.com/aggbug/72.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/SharepointBrainFreeze/~4/0th9fj6mlE0" height="1" width="1"/&gt;</description>
            <dc:creator>Joshua Carlisle</dc:creator>
            <guid isPermaLink="false">http://www.sharepointbrainfreeze.com/archive/2010/11/04/raleigh-code-camp-and-sharepoint-saturday-richmond-and-virginia-beach.aspx</guid>
            <pubDate>Thu, 04 Nov 2010 21:18:45 GMT</pubDate>
            <comments>http://www.sharepointbrainfreeze.com/archive/2010/11/04/raleigh-code-camp-and-sharepoint-saturday-richmond-and-virginia-beach.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://www.sharepointbrainfreeze.com/comments/commentRss/72.aspx</wfw:commentRss>
            <trackback:ping>http://www.sharepointbrainfreeze.com/services/trackbacks/72.aspx</trackback:ping>
        <feedburner:origLink>http://www.sharepointbrainfreeze.com/archive/2010/11/04/raleigh-code-camp-and-sharepoint-saturday-richmond-and-virginia-beach.aspx</feedburner:origLink></item>
        <item>
            <title>SharePoint Smart 404 Project Update</title>
            <category>SharePoint</category>
            <category>SharePoint Community</category>
            <link>http://feedproxy.google.com/~r/SharepointBrainFreeze/~3/SaHjuqtSfKg/sharepoint-smart-404-project-update.aspx</link>
            <description>&lt;p&gt;By now most of the industry is probably aware of the asp.net vulnerability that was recently announced by Microsoft (see &lt;a title="http://go.microsoft.com/?linkid=9652408" href="http://go.microsoft.com/?linkid=9652408"&gt;Microsoft Advisory&lt;/a&gt; for more details) . Of course because SharePoint is just an asp.net application it is affected by the vulnerability as well although the &lt;a href="http://blogs.msdn.com/b/sharepoint/archive/2010/09/21/security-advisory-2416728-vulnerability-in-asp-net-and-sharepoint.aspx"&gt;Microsoft SharePoint team blog&lt;/a&gt; has announced some specifics steps for SharePoint to ensure the vulnerability doesn’t expose your SharePoint site to the wilds with this vulnerability. The core of the issue revolves around how asp.net presents exceptions and under the right scenarios hackers using the exception information to access restricted files on your site such as the web.config. &lt;/p&gt;  &lt;p&gt;From Scott Guthrie’s &lt;a href="http://weblogs.asp.net/scottgu/archive/2010/09/18/important-asp-net-security-vulnerability.aspx"&gt;Blog Post&lt;/a&gt;:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;“&lt;strong&gt;Important&lt;/strong&gt;: It &lt;u&gt;is not&lt;/u&gt; enough to simply turn on CustomErrors or have it set to RemoteOnly. You also need to make sure that all errors are configured to return the same error page.  This requires you to &lt;u&gt;explicitly&lt;/u&gt; set the “defaultRedirect” attribute on the &amp;lt;customErrors&amp;gt; section and ensure that no per-status codes are set.”&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;In an &lt;a href="http://weblogs.asp.net/scottgu/archive/2010/09/20/frequently-asked-questions-about-the-asp-net-security-vulnerability.aspx"&gt;additional post&lt;/a&gt; he also states:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;“If the responses that are sent out from your custom logging module do not let the client distinguish between error responses either through its content or time that it takes to serve out, then such a module is an adequate replacement for the customErrors workaround. These responses include both the entire HTTP response and the HTTP error code. If any of the above is not true at all times, then this is not sufficient.  Instead you should send out the same error response for all errors until the security update is available to fix the underlying vulnerability.”&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;This got me to thinking about one of my projects, the &lt;a href="http://sharepointsmart404.codeplex.com/"&gt;SharePoint Smart 404 Project&lt;/a&gt; on CodePlex, which as one of its core components, provides a custom 404 and a custom error handling module which traps unhandled exceptions, logs them, and present the user with a generic friendly error message. The Smart 404 modules do not pass on any http responses, error codes, or exception details to the browser or to the UI.  If my understanding of the above statement is correct the SharePoint Smart 404 Project falls into the “safe” category. &lt;strong&gt;NOTE: This is not a warranty, just my interpretation of the statement, please ensure you follow the advice provided by the Microsoft Advisory.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;I was recently working on some updates in response to some feedback over the last year so I thought this might be a good time to publish the update out and provide some better guidance on how to use and deploy the SharePoint Smart 404 packages\features. The main goal of this release was to improve, simplify, and standardize the deployment experience. Due to the amount of questions related to deployment and functionality I thought a webcast covering the functionality, configuration, and deployment would be helpful. &lt;/p&gt;  &lt;p&gt;&lt;iframe height="327" src="http://r.office.microsoft.com/r/rlidPowerPointEmbed?p1=1&amp;amp;p2=1&amp;amp;p3=SD5A5344BF3052F19D!229&amp;amp;p4=" frameborder="0" width="402" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;&lt;iframe style="width: 640px; height: 480px" src="http://www.sharepointbrainfreeze.com/media/smart404/default.html" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;So just a quick summary of some of the improvements:&lt;/p&gt;  &lt;p&gt;- Several aspects of the functionality required elevated permissions including the registration of the custom 404 page and web.config updates. The application is now split between two Features, a web application level feature and a site collection level feature, to support more standard environments that have application pools permissions configured according to best practices.&lt;/p&gt;  &lt;p&gt;- Additional configuration items in the web.config are pushed down as part of the feature which will negate the need for manual web.config updates which will indirectly better support larger farm deployments.&lt;/p&gt;  &lt;p&gt;- Localization: All literals within the user interface are now driven by resources files. Only US English is deployed with the package but additional resources files to support different locals can be added as needed. (see the webcast for some limitations on deployment to other locals).&lt;/p&gt;  &lt;p&gt;The latest packages and code base can be downloaded at &lt;a href="http://sharepointsmart404.codeplex.com/"&gt;http://sharepointsmart404.codeplex.com/&lt;/a&gt;. As is always feedback is welcomed. &lt;/p&gt;&lt;img src="http://www.sharepointbrainfreeze.com/aggbug/71.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/SharepointBrainFreeze/~4/SaHjuqtSfKg" height="1" width="1"/&gt;</description>
            <dc:creator>Joshua Carlisle</dc:creator>
            <guid isPermaLink="false">http://www.sharepointbrainfreeze.com/archive/2010/10/01/sharepoint-smart-404-project-update.aspx</guid>
            <pubDate>Fri, 01 Oct 2010 04:44:00 GMT</pubDate>
            <comments>http://www.sharepointbrainfreeze.com/archive/2010/10/01/sharepoint-smart-404-project-update.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://www.sharepointbrainfreeze.com/comments/commentRss/71.aspx</wfw:commentRss>
            <trackback:ping>http://www.sharepointbrainfreeze.com/services/trackbacks/71.aspx</trackback:ping>
        <feedburner:origLink>http://www.sharepointbrainfreeze.com/archive/2010/10/01/sharepoint-smart-404-project-update.aspx</feedburner:origLink></item>
        <item>
            <title>SPS Baltimore Follow-up And Triangle SharePoint User Group (Raleigh) with Steve Pietrek</title>
            <link>http://feedproxy.google.com/~r/SharepointBrainFreeze/~3/UCX4_JNU9So/sps-baltimore-follow-up-and-triangle-sharepoint-user-group-raleigh.aspx</link>
            <description>&lt;p&gt;SharePoint Saturday Baltimore by all accounts (and mine personally) was an huge success. Truly one of the nicest facilities and accommodations (especially the lunch!) of any SharePoint Saturday event I’ve been to. Kudos to Eric Harlan, Fabian Williams, and the rest of the crew of volunteers and sponsors. Great Job!&lt;/p&gt;  &lt;p&gt;Unfortunately the shorter session (60 vs 75 minutes) and the fact that ice cream and snacks were being given out prior to my session causing a late start which together conspired against me to keep me from finishing off my session – only made it through 3/4 and barely at that – just too much content for 45 minutes. Because of this I’ve just finished off recording a webcast for those folks who would like to catch the entire session. With some minimal editing I should have it up over the long weekend, especially now that the hurricane missed most of North Carolina and I’ll have power (always a good thing!). I’ll have it posted at my blog.&lt;/p&gt;  &lt;p&gt;Finally I wanted to give a quick mention to Next week’s Triangle SharePoint User Group speaker &lt;a href="http://stevepietrek.com/"&gt;Steve Pietrek&lt;/a&gt; who will be speaking on Silverlight 4 with SharePoint 2007 &amp;amp; 2010. The genera meeting is held on the first Tuesday of each month which is next Tuesday September 7th. If your in\from the RTP area and want to catch a great presentation you should check it out. More information can be found at &lt;a href="http://www.trispug.com"&gt;http://www.trispug.com&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Lastly I apologize for my lack of posts on my blog, I’ve been working on a community project that in the end will have much more impact on the community as a whole then anything I could probably post on my blog – more to come soon &lt;img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.sharepointbrainfreeze.com/images/www_sharepointbrainfreeze_com/WindowsLiveWriter/NavigationDataAccessOptionsinSharePoint2_11E77/wlEmoticon-smile_2.png" /&gt;.&lt;/p&gt;&lt;img src="http://www.sharepointbrainfreeze.com/aggbug/70.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/SharepointBrainFreeze/~4/UCX4_JNU9So" height="1" width="1"/&gt;</description>
            <dc:creator>Joshua Carlisle</dc:creator>
            <guid isPermaLink="false">http://www.sharepointbrainfreeze.com/archive/2010/09/03/sps-baltimore-follow-up-and-triangle-sharepoint-user-group-raleigh.aspx</guid>
            <pubDate>Fri, 03 Sep 2010 14:32:53 GMT</pubDate>
            <comments>http://www.sharepointbrainfreeze.com/archive/2010/09/03/sps-baltimore-follow-up-and-triangle-sharepoint-user-group-raleigh.aspx#feedback</comments>
            <wfw:commentRss>http://www.sharepointbrainfreeze.com/comments/commentRss/70.aspx</wfw:commentRss>
            <trackback:ping>http://www.sharepointbrainfreeze.com/services/trackbacks/70.aspx</trackback:ping>
        <feedburner:origLink>http://www.sharepointbrainfreeze.com/archive/2010/09/03/sps-baltimore-follow-up-and-triangle-sharepoint-user-group-raleigh.aspx</feedburner:origLink></item>
        <item>
            <title>Working Around SharePoint Folder Limitations with Custom Actions</title>
            <category>SharePoint</category>
            <link>http://feedproxy.google.com/~r/SharepointBrainFreeze/~3/4Ki-vSGBack/working-around-sharepoint-folder-limitations-with-custom-actions.aspx</link>
            <description>&lt;p&gt;&lt;img style="margin: 0px 10px 10px 0px; display: inline" align="left" src="http://t1.gstatic.com/images?q=tbn:qRLllUuolPqS1M:http://www.bostonherald.com/blogs/sports/rap_sheet/wp-content/uploads/2009/10/devil.gif" /&gt;So we all know that folders in document libraries can be very evil things. On the surface they look like a good way to organize files, just like your inbox, but really in the end they just hide things and make it take longer to find what your looking for. It’s typically a better practice to define your site columns and content types for a document and simply filter as needed through the judicious use of views and the list’s filtering/sorting functionality. I generally use that as a rule of thumb when it comes to managing document meta data –no folders if it can be helped.  &lt;/p&gt;  &lt;p&gt;One area I do make an exception at times with folders is when item level security becomes a requirement. Item level security is a very powerful mechanism to secure your documents on a per item\entity basis but can quickly become both a maintenance burden on the individuals who have to manage the permissions and also a performance burden on the list.  As the number of files protected by individual security principal assignments continue to grow performance can decrease. You can mitigate some of the maintenance burden’s with some intelligent post processing and assignment of security through a event receiver or a workflow.   You can also reduce the overhead in some scenarios by grouping documents into a folder and securing only the folder and allowing the files within the folder to inherit the permissions of the parent. Less unique permission assignments equates to less overhead.  Unfortunately you are also back to your documents being hidden because their meta data that you took so long to define isn’t surfacing through the folder.  &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.sharepointbrainfreeze.com/images/www_sharepointbrainfreeze_com/WindowsLiveWriter/WorkingAroundSharePointFolderLimitations_DA5D/image_2.png" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://www.sharepointbrainfreeze.com/images/www_sharepointbrainfreeze_com/WindowsLiveWriter/WorkingAroundSharePointFolderLimitations_DA5D/image_thumb.png" width="570" height="212" /&gt;&lt;/a&gt; One way around this is to sync up meta data from your folder contents to the folder. I don’t particularly like this approach as it duplicates meta data and requires a synchronization process. The common way I get around this is to design a view that removes the folder and only shows the content. It’s really straight forward, out of the box, and is pretty close to being a best of both worlds. Unfortunately one area where it becomes a problem is when you want to get back to the folder view so you can upload documents into the correct folder. An especially important use case when you’re trying to secure documents by placing them in the correct folder. In this case you need to switch to a different view that shows folder, try to remember what the parent folder is, and then hunt for that folder paying careful attention not to place your very important document in the wrong folder – not the best of solutions.&lt;/p&gt;  &lt;p&gt;To make this last use case a bit easier to digest for my users we thought it would be helpful to give them a short cut navigation to the parent folder in the form of a new menu option located in the Edit Control Block (ECB) – the dropdown menu displayed when you hover over a list item. We did this through a custom action and some simple javascript. Although it requires a feature to work it is a no-code (compiled) solution so the development effort is quite minimal.&lt;/p&gt;  

&lt;p&gt;The Solution:&lt;/p&gt; 

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Elements&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://schemas.microsoft.com/sharepoint/"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; 

&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;CustomAction&lt;/span&gt;
        &lt;span class="attr"&gt;Id&lt;/span&gt;&lt;span class="kwrd"&gt;="MyFile.ParentFolder"&lt;/span&gt;
        &lt;span class="attr"&gt;Location&lt;/span&gt;&lt;span class="kwrd"&gt;="EditControlBlock"&lt;/span&gt;
        &lt;span class="attr"&gt;Title&lt;/span&gt;&lt;span class="kwrd"&gt;="Open Parent Folder"&lt;/span&gt;
        &lt;span class="attr"&gt;RegistrationType&lt;/span&gt;&lt;span class="kwrd"&gt;="ContentType"&lt;/span&gt;
        &lt;span class="attr"&gt;RegistrationId&lt;/span&gt;&lt;span class="kwrd"&gt;="0x0101"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;UrlAction&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;="javascript:function process()
                               {
                                      var itemUrl = '{ItemUrl}'; 
                                      var index= itemUrl.lastIndexOf('/',itemUrl.length); 
                                      var folder=itemUrl.substr(0,index); 
                                      window.location=folder;
                                };
                                process();"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;CustomAction&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Elements&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;

&lt;br /&gt;

&lt;p&gt;Take note of a couple key points:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;This custom action will be displayed for any document content type. If you need to be more specific, for example only content types you know will live in folders, then you should specify the content type ID in the RegistrationId element of document content types you are targeting.
    &lt;br /&gt;&lt;/li&gt;

  &lt;li&gt;The UrlAction makes use of inline javascript and most importantly the SharePoint Custom Action Token {ItemUrl} . This is a variable provided by the Custom Action framework and provides the url of the current item. This is key to parsing the url and building a link to the parent folder.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In the end it allows us to turn this:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.sharepointbrainfreeze.com/images/www_sharepointbrainfreeze_com/WindowsLiveWriter/WorkingAroundSharePointFolderLimitations_DA5D/image_6.png" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.sharepointbrainfreeze.com/images/www_sharepointbrainfreeze_com/WindowsLiveWriter/WorkingAroundSharePointFolderLimitations_DA5D/image_thumb_2.png" width="449" height="194" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Into this:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.sharepointbrainfreeze.com/images/www_sharepointbrainfreeze_com/WindowsLiveWriter/WorkingAroundSharePointFolderLimitations_DA5D/image_4.png" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.sharepointbrainfreeze.com/images/www_sharepointbrainfreeze_com/WindowsLiveWriter/WorkingAroundSharePointFolderLimitations_DA5D/image_thumb_1.png" width="581" height="317" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;It’s worth mentioning that there is a great feature in SharePoint 2010 called document sets that may mean once and for all I can ditch the folder when I want to put all related documents into a “bucket” but for the time being in SharePoint 2007 this solution works well for me and has low development overhead. Granted this is a bit of a specific scenario but the subject of folders and SharePoint isn’t rare and its always good to know what your options are.&lt;/p&gt;&lt;img src="http://www.sharepointbrainfreeze.com/aggbug/69.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/SharepointBrainFreeze/~4/4Ki-vSGBack" height="1" width="1"/&gt;</description>
            <dc:creator>Joshua Carlisle</dc:creator>
            <guid isPermaLink="false">http://www.sharepointbrainfreeze.com/archive/2010/04/20/working-around-sharepoint-folder-limitations-with-custom-actions.aspx</guid>
            <pubDate>Tue, 20 Apr 2010 19:48:42 GMT</pubDate>
            <comments>http://www.sharepointbrainfreeze.com/archive/2010/04/20/working-around-sharepoint-folder-limitations-with-custom-actions.aspx#feedback</comments>
            <slash:comments>14</slash:comments>
            <wfw:commentRss>http://www.sharepointbrainfreeze.com/comments/commentRss/69.aspx</wfw:commentRss>
            <trackback:ping>http://www.sharepointbrainfreeze.com/services/trackbacks/69.aspx</trackback:ping>
        <feedburner:origLink>http://www.sharepointbrainfreeze.com/archive/2010/04/20/working-around-sharepoint-folder-limitations-with-custom-actions.aspx</feedburner:origLink></item>
        <item>
            <title>SharePoint Saturday Charlotte and Atlanta</title>
            <category>SharePoint</category>
            <category>SharePoint 2010</category>
            <category>SharePoint Community</category>
            <category>SharePoint Saturday</category>
            <link>http://feedproxy.google.com/~r/SharepointBrainFreeze/~3/tz-sJu3awfk/sharepoint-saturday-charlotte-and-atlanta.aspx</link>
            <description>&lt;p&gt;I wanted to thank everyone who attended my session at SharePoint Saturday Charlotte last weekend on SharePoint 2010 Business Connectivity Services (BCS). I heard that some folks missed the session because my time got shuffled around at the last minute – sorry about that. I think its the nature of the beast when you get occasional no-shows from speakers and the schedule needs adjusting. I also appreciated the discussion and questions during the session – sometimes the last session of the day can be very quite :) A special thanks out Brian Gough and Dan Lewis for putting another great event together in Charlotte.&lt;/p&gt;  &lt;p&gt;My slide deck for the BCS presentation at Charlotte is available &lt;a href="http://www.slideshare.net/joshcarlisle/introduction-to-sharepoint-2010-business-connectivity-services-bcs"&gt;here&lt;/a&gt; and my demo code can be downloaded &lt;a href="http://www.sharepointbrainfreeze.com/files/IntroSP2010_BCS_Josh_Carlisle_Demo.zip"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Moving onto this coming weekend, to the chagrin of my neighbors, I’ll be getting out of mowing the lawn for one more weekend to present at SharePoint Saturday Atlanta where I know Dan Attis and Lee Reed are working hard to put together a good event as well. It’s been a while since I’ve been to Atlanta so I’m looking forward to catching up with folks. I have two new SharePoint 2010 presentations that I will be giving in Atlanta including:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Feature Framework Enhancements with SharePoint 2010 – 200 Level&lt;/strong&gt;    &lt;br /&gt;Features provide the core provisioning framework for SharePoint. Introduced in SharePoint 2007 Features provide a mechanism to define elements within your SharePoint site. SharePoint 2010 provides several enhancements to the Features framework. In particular the new support for upgrading features.  In this session we’ll be covering some of these new enhancements paying particular close attention to the new feature upgrade framework.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;An Introduction to SharePoint 2010’s Linq to SharePoint – 200 Level&lt;/strong&gt;    &lt;br /&gt;Querying SharePoint lists through code has historically been a painful process with the CAML query syntax. With SharePoint 2010 we now have formal support for Linq which allows for a SQL like syntax for querying against SharePoint data. In this session we will be covering the basics of using Linq to SharePoint.&lt;/p&gt;  &lt;p&gt;Have some feedback or questions on my past\future sessions? Feel free to drop me a comment.&lt;/p&gt;&lt;img src="http://www.sharepointbrainfreeze.com/aggbug/68.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/SharepointBrainFreeze/~4/tz-sJu3awfk" height="1" width="1"/&gt;</description>
            <dc:creator>Joshua Carlisle</dc:creator>
            <guid isPermaLink="false">http://www.sharepointbrainfreeze.com/archive/2010/04/13/sharepoint-saturday-charlotte-and-atlanta.aspx</guid>
            <pubDate>Tue, 13 Apr 2010 14:39:42 GMT</pubDate>
            <comments>http://www.sharepointbrainfreeze.com/archive/2010/04/13/sharepoint-saturday-charlotte-and-atlanta.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://www.sharepointbrainfreeze.com/comments/commentRss/68.aspx</wfw:commentRss>
            <trackback:ping>http://www.sharepointbrainfreeze.com/services/trackbacks/68.aspx</trackback:ping>
        <feedburner:origLink>http://www.sharepointbrainfreeze.com/archive/2010/04/13/sharepoint-saturday-charlotte-and-atlanta.aspx</feedburner:origLink></item>
        <item>
            <title>Working With SharePoint Document Templates</title>
            <link>http://feedproxy.google.com/~r/SharepointBrainFreeze/~3/4ve7zHbFP3U/working-with-sharepoint-document-templates.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://www.sharepointbrainfreeze.com/images/www_sharepointbrainfreeze_com/WindowsLiveWriter/008a25ee3c5f_E773/complexity_2.gif" rel="lightbox"&gt;&lt;img style="margin: 10px 10px 10px 0px; display: inline" title="complexity" alt="complexity" align="left" src="http://www.sharepointbrainfreeze.com/images/www_sharepointbrainfreeze_com/WindowsLiveWriter/008a25ee3c5f_E773/complexity_thumb.gif" width="150" height="150" /&gt;&lt;/a&gt;I was recently having a conversation with one of my co-workers over provisioning document templates within a feature for one of our current projects. There were several examples available from random blogs within easy reach to anyone with a browser, internet access, and you favorite search engine. Although the examples I found to be technically correct they all seemed to overly complicate the process of setting up a content type and provisioning an associated document template within a feature. &lt;br /&gt;&lt;br /&gt;Before I jump into the approach I typically use let do a quick review of SharePoint document templates.  SharePoint provides the ability to associate document content types with document templates. These can be word documents, excel documents, whatever your needs are. These content types can then be associated with a document library. This provides the ability for a new documents to be created, based on the provided template, and associated with the desired meta data found in the content type. Once configured your document template and associated content type will appear in the new item options dropdown within your document library. It’s worth mentioning that document libraries themselves can have default templates but the real power comes with the combination of multiple content types and default templates for a single document library.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Building The Feature&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;The core of any feature is the associated elements file(s) – this is were all the provisioning instructions are provided. For our purpose we’re going to be working with four specific elements:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;&amp;lt;Field&amp;gt; – Define our Site Columns that will be part of our content type.&lt;/li&gt; &lt;li&gt;&amp;lt;ContentType&amp;gt; – Define our Content Type, the associated document template, and associated site columns (fields). Our content type is based on the base document content type indicated by a content type ID beginning with 0x0101.&lt;/li&gt; &lt;li&gt;&amp;lt;ListInstance&amp;gt; – Optionally create a new document library that our content types will be associated with.&lt;/li&gt; &lt;li&gt;&amp;lt;ContentTypeBinding&amp;gt; – Associates our content type with a document library. &lt;/li&gt; &lt;li&gt;&amp;lt;Module&amp;gt; – Provisions our document template referenced within the &amp;lt;ContentType&amp;gt; element.&lt;/li&gt;&lt;/ol&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Elements&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://schemas.microsoft.com/sharepoint/"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="rem"&gt;&amp;lt;!-- Provision Site Column --&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;="Choice"&lt;/span&gt;
         &lt;span class="attr"&gt;DisplayName&lt;/span&gt;&lt;span class="kwrd"&gt;="DocumentType"&lt;/span&gt;
         &lt;span class="attr"&gt;StaticName&lt;/span&gt;&lt;span class="kwrd"&gt;="DocumentType"&lt;/span&gt;
         &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="DocumentType"&lt;/span&gt;
         &lt;span class="attr"&gt;Required&lt;/span&gt;&lt;span class="kwrd"&gt;="FALSE"&lt;/span&gt;
         &lt;span class="attr"&gt;Format&lt;/span&gt;&lt;span class="kwrd"&gt;="Dropdown"&lt;/span&gt;
         &lt;span class="attr"&gt;FillInChoice&lt;/span&gt;&lt;span class="kwrd"&gt;="FALSE"&lt;/span&gt;
         &lt;span class="attr"&gt;Group&lt;/span&gt;&lt;span class="kwrd"&gt;="MyCompany"&lt;/span&gt;
         &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="{c2cad809-5336-4d62-b8aa-ed8e55b0b200}"&lt;/span&gt;
         &lt;span class="attr"&gt;SourceID&lt;/span&gt;&lt;span class="kwrd"&gt;="http://schemas.microsoft.com/sharepoint/v3"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;CHOICES&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;CHOICE&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Finance&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;CHOICE&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;CHOICE&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Sales&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;CHOICE&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;CHOICES&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="rem"&gt;&amp;lt;!-- Provision Content Type and associate the document template --&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ContentType&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="0x0101003C32228299AD46c5B47688879AEBD5AB"&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="Corporate Document"&lt;/span&gt; &lt;span class="attr"&gt;Group&lt;/span&gt;&lt;span class="kwrd"&gt;="My Document"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FieldRefs&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FieldRef&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="{c2cad809-5336-4d62-b8aa-ed8e55b0b200}"&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="DocumentType"&lt;/span&gt; &lt;span class="attr"&gt;Required&lt;/span&gt;&lt;span class="kwrd"&gt;="TRUE"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;FieldRefs&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DocumentTemplate&lt;/span&gt; &lt;span class="attr"&gt;TargetName&lt;/span&gt;&lt;span class="kwrd"&gt;="/_cts/Corporate Document/documenttemplate.docx"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ContentType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="rem"&gt;&amp;lt;!-- Provision the document template in system content types virtual folder --&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Module&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="DocumentTemplates"&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;="_cts/Corporate Document"&lt;/span&gt; &lt;span class="attr"&gt;RootWebOnly&lt;/span&gt;&lt;span class="kwrd"&gt;="TRUE"&lt;/span&gt; &lt;span class="attr"&gt;Path&lt;/span&gt;&lt;span class="kwrd"&gt;="DocumentTemplates"&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;File&lt;/span&gt; &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;="documenttemplate.docx"&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;="Ghostable"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Module&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  
  &lt;span class="rem"&gt;&amp;lt;!-- Optionally create a new document library and associate the new content type(s) --&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ListInstance&lt;/span&gt; &lt;span class="attr"&gt;TemplateType&lt;/span&gt;&lt;span class="kwrd"&gt;="101"&lt;/span&gt;
             &lt;span class="attr"&gt;RootWebOnly&lt;/span&gt;&lt;span class="kwrd"&gt;="false"&lt;/span&gt;
             &lt;span class="attr"&gt;Id&lt;/span&gt;&lt;span class="kwrd"&gt;="CorpDocuments"&lt;/span&gt;
             &lt;span class="attr"&gt;Title&lt;/span&gt;&lt;span class="kwrd"&gt;="CorpDocuments"&lt;/span&gt;
             &lt;span class="attr"&gt;Url&lt;/span&gt;&lt;span class="kwrd"&gt;="CorpDocuments"&lt;/span&gt;
             &lt;span class="attr"&gt;OnQuickLaunch&lt;/span&gt;&lt;span class="kwrd"&gt;="true"&lt;/span&gt;
             &lt;span class="attr"&gt;FeatureId&lt;/span&gt;&lt;span class="kwrd"&gt;="00BFEA71-E717-4E80-AA17-D0C71B360101"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ListInstance&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ContentTypeBinding&lt;/span&gt; &lt;span class="attr"&gt;ContentTypeId&lt;/span&gt;&lt;span class="kwrd"&gt;="0x0101003C32228299AD46c5B47688879AEBD5AB"&lt;/span&gt; &lt;span class="attr"&gt;ListUrl&lt;/span&gt;&lt;span class="kwrd"&gt;="CorpDocuments"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
  
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Elements&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd" /&gt; &lt;/pre&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd" /&gt; &lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
]]&gt;&lt;/style&gt;

&lt;p&gt;It’s worth noting depending on your needs you may need to add a feature receiver to your feature to enable content type management on the list by default and to set default content types. Unfortunately this can’t be accomplished declaratively in the elements file.&lt;/p&gt;
&lt;p&gt;The following is a snippet for establishing a default content type when you are just dealing with a single content type although it could be easily modified for ordering more then one content type in addition to setting the default. It also enables the management of content types on the list.&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; SetDefaultContentType(SPList list, &lt;span class="kwrd"&gt;string&lt;/span&gt; defaultContentTypeName)
{
       SPContentType defaultContentType = list.ContentTypes[defaultContentTypeName];
       list.ContentTypesEnabled = &lt;span class="kwrd"&gt;true&lt;/span&gt;;

       SPFolder folder = list.RootFolder;
       SPContentType[] orderedContentTypes = &lt;span class="kwrd"&gt;new&lt;/span&gt; SPContentType[1];
       orderedContentTypes[0] = defaultContentType;

       folder.UniqueContentTypeOrder = orderedContentTypes;
       folder.Update();

}&lt;/pre&gt;&lt;pre class="csharpcode"&gt; &lt;/pre&gt;&lt;pre class="csharpcode"&gt; &lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
]]&gt;&lt;/style&gt;

&lt;p&gt;&lt;strong&gt;Working With Templates Through Code&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For most end users new documents will be created through the browser. At times however, such as within workflows, you may want to create new documents based on the available templates dynamically through code.  The following technique is the approach I typically make to creating new documents based on content type templates for libraries with multiple content types (and associated templates):&lt;/p&gt;&lt;pre class="csharpcode"&gt;SPList docLibrary = web.Lists[&lt;span class="str"&gt;"CorpLibrary"&lt;/span&gt;];
SPContentType docContentType = docLibrary.ContentTypes[&lt;span class="str"&gt;"Corporate Document"&lt;/span&gt;];

&lt;span class="rem"&gt;//Get a reference to the template file for the content type and load it into a raw byte array&lt;/span&gt;
SPFile docTemplateFile = web.GetFile(docContentType.DocumentTemplateUrl);
&lt;span class="kwrd"&gt;byte&lt;/span&gt;[] rawTemplateFile = docTemplateFile.OpenBinary();

&lt;span class="rem"&gt;//Create the new item and file based on the template&lt;/span&gt;
SPFile newFile = docLibrary.RootFolder.Files.Add(&lt;span class="str"&gt;"newdocument.docx"&lt;/span&gt;, rawTemplateFile);

&lt;span class="rem"&gt;//Update the content type for the new item and any desired fields&lt;/span&gt;
newFile.Item[&lt;span class="str"&gt;"ContentTypeId"&lt;/span&gt;] = docContentType.Id;
newFile.Item[&lt;span class="str"&gt;"DocumentType"&lt;/span&gt;] = &lt;span class="str"&gt;"Sales"&lt;/span&gt;;
newFile.Item.Update();&lt;/pre&gt;
&lt;p&gt;
&lt;/p&gt;&lt;style type="text/css"&gt;&lt;![CDATA[csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
]]&gt;&lt;/style&gt;

&lt;p&gt;One alternative approach suggested by a co-worker is to make use of the default content type. Each library can optionally contain a default content type. New items make use of the default content type when a specific content type isn’t selected in a dropdown. By using this technique you can optionally avoid the steps of getting a reference to the template file and updating the content type because the docLibray.Items.Add will create the document for you and set the content type but this makes the assumption that your desired document template is always the default template of the list. Yes you can dynamically modify the default template of the list at run time but this could lead to some undesirable side affects in an actively use document repository with its default content type changing frequently. &lt;/p&gt;
&lt;p&gt;As you can see the creation of default templates for content types is pretty straight forward and you can achieve more reuse in your environments by implementing the solution through a feature as opposed to manually through the browser.&lt;/p&gt;&lt;img src="http://www.sharepointbrainfreeze.com/aggbug/67.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/SharepointBrainFreeze/~4/4ve7zHbFP3U" height="1" width="1"/&gt;</description>
            <dc:creator>Joshua Carlisle</dc:creator>
            <guid isPermaLink="false">http://www.sharepointbrainfreeze.com/archive/2010/03/03/working-with-sharepoint-document-templates.aspx</guid>
            <pubDate>Wed, 03 Mar 2010 15:57:19 GMT</pubDate>
            <comments>http://www.sharepointbrainfreeze.com/archive/2010/03/03/working-with-sharepoint-document-templates.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://www.sharepointbrainfreeze.com/comments/commentRss/67.aspx</wfw:commentRss>
            <trackback:ping>http://www.sharepointbrainfreeze.com/services/trackbacks/67.aspx</trackback:ping>
        <feedburner:origLink>http://www.sharepointbrainfreeze.com/archive/2010/03/03/working-with-sharepoint-document-templates.aspx</feedburner:origLink></item>
        <item>
            <title>Combining JQuery UI Dialogs and SharePoint WebParts</title>
            <category>SharePoint</category>
            <link>http://feedproxy.google.com/~r/SharepointBrainFreeze/~3/IZdhcmAqkoU/combining-jquery-ui-dialogs-and-sharepoint-webparts.aspx</link>
            <description>&lt;p&gt; &lt;a rel="lightbox" href="http://www.sharepointbrainfreeze.com/images/www_sharepointbrainfreeze_com/WindowsLiveWriter/CombiningJQueryUIDialogsandSharePointWeb_F1E6/castaway_4.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px 15px 15px 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="castaway" border="0" alt="castaway" align="left" width="375" height="298" src="http://www.sharepointbrainfreeze.com/images/www_sharepointbrainfreeze_com/WindowsLiveWriter/CombiningJQueryUIDialogsandSharePointWeb_F1E6/castaway_thumb_1.jpg" /&gt;&lt;/a&gt; In case you’ve been shipwrecked on a desert island for the last few years &lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt; is a javascript library that simplifies the querying of HTML elements with a web page and greatly simplifies the implementation of Ajax techniques within a web page. The functionality that jQuery represents isn’t anything new but the effort level to implement some of the same facets of functionality has been greatly reduced and simplified by the use of the jQuery library. Additionally many offshoot projects have been created that add functionality on top of the jQuery library. One of my favorites is the &lt;a href="http://jqueryui.com/"&gt;jQuery User Interface library&lt;/a&gt; that adds new rather slick UI elements onto the library. These range from Accordions, Date Pickers, and Progress Bars to Sliders, Tabs, and Dialogs.  Of those elements provided by the jQuery UI Library I have found the Dialog has been very helpful in several of my projects as of late.  A modal dialog that isn’t caught by popup blockers can be a great tool to quickly collect information or complex confirmations from the user. &lt;/p&gt;
&lt;p&gt;At a high level a&lt;font style="BACKGROUND-COLOR: #ffffff"&gt; dialog typically collects information from the user, performs some action based on the information collected, and optionally updates user interface elements in response to that action. In our context this functionality should be able to be encapsulated within a reusable WebPart with minimal external dependencies (or more desirable – no external dependencies). &lt;/font&gt;Unfortunately implementing client script based solutions within custom components, specifically WebParts, can often be confusing until you get the technique down. Keep in mind these are not asp.net server controls that you can instantiate in your WebPart or drop onto an asp.net form. These are purely script based solution. The solution that I demonstrate here is one possible technique that I found to be a good compromise between a pure client script based model and the classic asp.net postback model found commonly in WebParts and asp.net pages.  &lt;/p&gt;
&lt;p&gt;In the context of a webpart we run into some of the following challenges:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;The jQuery and jQuery UI library isn’t intrinsically aware of the asp.net postback model. Executing server side logic can become more problematic and often requires additional interfaces such as web services. &lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;More then one instance of this component may exist on a web page so any script logic would need to understand this implication and be very specific when it comes to querying for specific UI elements. Due to this fact we can’t always make use of some of the powerful selectors in jQuery. &lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;Combing the process of creating server side controls and getting the power that asp.net provides and still letting it support the great UI enhancement that the jQuery libraries can be a challenge. &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To address these concerns we’ll make some compromises in our implementation that allows to get close to a best of both worlds. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GetPostBackReference &lt;br /&gt;
&lt;/strong&gt;One of the first compromises we’re going to make to get a best of breed approach is the Save behavior. As I mentioned in a native scripting solution you would likely interact with server side logic via web service. To reduce the deployment overhead of this solution we want to be able to use some standard postback behavior to execute server side logic. In our case we’re going to reuse the postback event reference to execute some code in a button click event. Not only does this save us from creating the web service it also saves some client side complexity when it comes to calling the web service and also updating any appropriate UI elements from the script. Our solutions will let the page (and control) render again.&lt;/p&gt;
&lt;p&gt;Of course this key compromise isn’t ideal in all scenarios. If you need a page update without a postback then you’ll have some extra work. This provide our desired dialog experience but the final page refresh may be a deal breaker.  Not as clean of an Ajax solution that some may expect after you save.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Script Client ID References &lt;br /&gt;
&lt;/strong&gt;For those developers new to the client scripting model from the asp.net server side model the first important distinction is how controls are referenced. On the server side we can reference a control through its server ID. On the client side the asp.net framework dynamically generates IDs based on where the control lives in the control hierarchy to ensure unique IDs. JavaScript of course works at the client level. This can make it tricky to interact with scripts in the client when they have different IDs. The key to this is the ClientID property on a webcontrol (textbox, panel, dropdowns,etc). The ClientID represents the ID located on the client side and any references in scripts will require this reference.  Due to this nature in the lifecycle of asp.net controls we’ll need to combine scripts and apply the appropriate ID to the script before its rendered to the page.&lt;/p&gt;
&lt;p&gt;You may be asking yourself “&lt;em&gt;wait doesn’t jQuery make it easy to find a reference to an HTML element?&lt;/em&gt;”. That is true but because the nature of a WebPart the framework allows you to place multiple instances on a WebPart page which will mean that you are required to uniquely identify each instance within your JavaScript. In this case a selector based on the other attributes will still very likely give you multiple results, definitely not desirable. &lt;/p&gt;
&lt;h3&gt;The Solution&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;Using WSPBuilder we’re going to create a new WebPart project. This will give us our basic WebPart plumbing and supporting feature. WSPBuilder isn’t a requirement just my tool preference for SharePoint Feature development. You’ll also need to make sure you have references in your masterpage to the jQuery and jQuery UI libraries. For our purposes we’ve included the libraries and supporting in our project and deployed to the layouts folder. Some folks prefer to reference google’s hosted versions of the libraries found at &lt;a href="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"&gt;http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js&lt;/a&gt; and &lt;a href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js"&gt;http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js&lt;/a&gt; respectively. Lastly we’ve included resource files that will contain our custom JavaScript. &lt;br /&gt;
&lt;br /&gt;
Our solution explorer should look like the following:&lt;/p&gt;
&lt;p&gt;&lt;a rel="lightbox" href="http://www.sharepointbrainfreeze.com/images/www_sharepointbrainfreeze_com/WindowsLiveWriter/CombiningJQueryUIDialogsandSharePointWeb_F1E6/image_4.png"&gt;&lt;img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="image" border="0" alt="image" width="283" height="363" src="http://www.sharepointbrainfreeze.com/images/www_sharepointbrainfreeze_com/WindowsLiveWriter/CombiningJQueryUIDialogsandSharePointWeb_F1E6/image_thumb_1.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;Building the Dialog and Hide\Show Button&lt;/h4&gt;
&lt;p&gt;First off we want to handle building the dialog. In the CreateChildControls we’ll need to build out the dialog that will be presented to the user and the button that will be used to hide and show the dialog. It’s worth noting that we’ll be using the same control to both hide and show the dialog using client side script AND execute server side logic on the postback event. I’ve included some standard jQuery UI CSS with the button attributes as well.&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;//Create the Dialog&lt;/span&gt;
pnlDialog = &lt;span class="kwrd"&gt;new&lt;/span&gt; Panel();
pnlDialog.ID = &lt;span class="str"&gt;"pnlDialog"&lt;/span&gt;;

Label lblDialogNotice = &lt;span class="kwrd"&gt;new&lt;/span&gt; Label();
lblDialogNotice.CssClass = &lt;span class="str"&gt;"dialogNotice"&lt;/span&gt;;
lblDialogNotice.Text = &lt;span class="str"&gt;"Please fill out the following fields to create your site: &amp;lt;/br&amp;gt;&amp;lt;/br&amp;gt;"&lt;/span&gt;;
pnlDialog.Controls.Add(lblDialogNotice);

 &lt;span class="rem"&gt;//Title&lt;/span&gt;
pnlDialog.Controls.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; LiteralControl(&lt;span class="str"&gt;"Title:&amp;lt;br&amp;gt;"&lt;/span&gt;));
txtTitle = &lt;span class="kwrd"&gt;new&lt;/span&gt; TextBox();
txtTitle.ID = &lt;span class="str"&gt;"txtTitle"&lt;/span&gt;;
pnlDialog.Controls.Add(txtTitle);

&lt;span class="rem"&gt;//Title&lt;/span&gt;
pnlDialog.Controls.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; LiteralControl(&lt;span class="str"&gt;"&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Description:&amp;lt;br&amp;gt;"&lt;/span&gt;));
txtDescription = &lt;span class="kwrd"&gt;new&lt;/span&gt; TextBox();
txtDescription.ID = &lt;span class="str"&gt;"txtDescription"&lt;/span&gt;;
pnlDialog.Controls.Add(txtDescription);

&lt;span class="rem"&gt;//Title&lt;/span&gt;
pnlDialog.Controls.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; LiteralControl(&lt;span class="str"&gt;"&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Site Template:&amp;lt;br&amp;gt;"&lt;/span&gt;));
ddSiteTemplates = &lt;span class="kwrd"&gt;new&lt;/span&gt; DropDownList();
ddSiteTemplates.ID = &lt;span class="str"&gt;"ddSiteTemplates"&lt;/span&gt;;
ddSiteTemplates.Items.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; ListItem(&lt;span class="str"&gt;"Blank"&lt;/span&gt;, &lt;span class="str"&gt;"STS#1"&lt;/span&gt;));
ddSiteTemplates.Items.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; ListItem(&lt;span class="str"&gt;"Team"&lt;/span&gt;, &lt;span class="str"&gt;"STS#0"&lt;/span&gt;));

pnlDialog.Controls.Add(ddSiteTemplates);
&lt;span class="kwrd"&gt;base&lt;/span&gt;.Controls.Add(pnlDialog);&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;//Button that will initiate the dialog&lt;/span&gt;
btnShowDialog = &lt;span class="kwrd"&gt;new&lt;/span&gt; Button();
btnShowDialog.ID = &lt;span class="str"&gt;"btnShowDialog"&lt;/span&gt;;
btnShowDialog.Text = &lt;span class="str"&gt;"Create New Site"&lt;/span&gt;;
btnShowDialog.CssClass = &lt;span class="str"&gt;"ui-button ui-state-default"&lt;/span&gt;;
btnShowDialog.OnClientClick = &lt;span class="str"&gt;"return false;"&lt;/span&gt;;
btnShowDialog.Click += &lt;span class="kwrd"&gt;new&lt;/span&gt; EventHandler(btnShowDialog_Click);

&lt;span class="kwrd"&gt;base&lt;/span&gt;.Controls.Add(btnShowDialog);&lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h4&gt;The Client Script&lt;/h4&gt;
&lt;p&gt;The client script that will be used is very close to script library samples provided by the jQuery UI project. The only thing of note located in the script are some tokens, indicated by text enclosed in brackets [ ],  that will be replaced at run time with valid client ID values. This is what will allow us to provide context appropriate Client IDs to account for the possibility of multiple instances of WebParts. Finally you’ll notice that I’ve placed the Dialog JavaScript within a resource file. I find this a cleaner solution for including JavaScript inside of a project rather then stitching it together with a stringbuilder or dozens of string concatenations. &lt;/p&gt;
&lt;p&gt;JavaScript:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;$(document).ready(&lt;span class="kwrd"&gt;function&lt;/span&gt;() {

    $(&lt;span class="str"&gt;'#[DialogId]'&lt;/span&gt;).dialog({
        autoOpen: &lt;span class="kwrd"&gt;false&lt;/span&gt;,
        height: 500,
        width: 300,
        modal: &lt;span class="kwrd"&gt;true&lt;/span&gt;,
        buttons: {
            &lt;span class="str"&gt;'Close'&lt;/span&gt;: &lt;span class="kwrd"&gt;function&lt;/span&gt;() {
                $(&lt;span class="kwrd"&gt;this&lt;/span&gt;).dialog(&lt;span class="str"&gt;'close'&lt;/span&gt;);
            },
            &lt;span class="str"&gt;'Save'&lt;/span&gt;: &lt;span class="kwrd"&gt;function&lt;/span&gt;() {
                $(&lt;span class="kwrd"&gt;this&lt;/span&gt;).dialog(&lt;span class="str"&gt;'close'&lt;/span&gt;);
                alert(&lt;span class="str"&gt;"Site Successfully Created"&lt;/span&gt;);
                [PostBackReference];

            }

        }
    });

    $(&lt;span class="str"&gt;'#[ShowDialogControlId]'&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt;() {
        $(&lt;span class="str"&gt;'#[DialogId]'&lt;/span&gt;).dialog(&lt;span class="str"&gt;'open'&lt;/span&gt;);
        $(&lt;span class="str"&gt;'#[DialogId]'&lt;/span&gt;).parent().appendTo($(&lt;span class="str"&gt;"form:first"&lt;/span&gt;));
    })

});&lt;/pre&gt;
&lt;pre class="csharpcode"&gt; &lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;
&lt;p&gt;WebPart Script Registration &amp;amp; btnShowDialog Click PostBack Event:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;string&lt;/span&gt; DialogScript = SiteCreationDialog.WebPartCode.Resources.DialogResources.dialog;

DialogScript = DialogScript.Replace(&lt;span class="str"&gt;"[ShowDialogControlId]"&lt;/span&gt;, btnShowDialog.ClientID);
DialogScript = DialogScript.Replace(&lt;span class="str"&gt;"[DialogId]"&lt;/span&gt;, pnlDialog.ClientID);
DialogScript = DialogScript.Replace(&lt;span class="str"&gt;"[PostBackReference]"&lt;/span&gt;, Page.ClientScript.GetPostBackEventReference(btnShowDialog, &lt;span class="kwrd"&gt;string&lt;/span&gt;.Empty));

Page.ClientScript.RegisterClientScriptBlock(&lt;span class="kwrd"&gt;this&lt;/span&gt;.GetType(), &lt;span class="str"&gt;"DialogScript"&lt;/span&gt;, DialogScript, &lt;span class="kwrd"&gt;true&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd" /&gt;&lt;/pre&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd" /&gt;&lt;/pre&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd" /&gt;&lt;/pre&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;void&lt;/span&gt; btnShowDialog_Click(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e)
{
            &lt;span class="rem"&gt;//Assumes the current users privledges are sufficient&lt;/span&gt;
            SPContext.Current.Web.Webs.Add(txtTitle.Text, txtTitle.Text, txtDescription.Text, (&lt;span class="kwrd"&gt;uint&lt;/span&gt;)1033, ddSiteTemplates.SelectedValue, &lt;span class="kwrd"&gt;false&lt;/span&gt;, &lt;span class="kwrd"&gt;false&lt;/span&gt;);

}&lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;&lt;style type="text/css"&gt;&lt;![CDATA[
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;
&lt;p&gt;&lt;br /&gt;
Of particular importance is the replacement of the PostBackReference token to use the postback of the BtnShowDialog control. This will allow our JavaScript dialog to call our postback event when the user selects the Dialog’s Save Button. Additionally we’re injecting our appropriate client side ID references to the JavaScript.&lt;/p&gt;
&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;As you can see with some very reusable boiler plate you can very quickly create custom dialogs using the jQuery \ jQueryUI libraries in combination with the arguably more familiar post back model with the compromise of a single postback. Not useful in all situations but a good tool for toolbox when it’s appropriate. &lt;br /&gt;
&lt;br /&gt;
A couple additional suggestions on usage:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Avoid controls in your dialog that trigger a postback. You’ll lose your dialog. A common example is that of validation controls. &lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;Place validation within the “Save” portion of the dialog JavaScript. My suggestion is to use native client side javascript validation at this point in time. If you need to you can pass additional client IDs in using the technique above. I think you’ll find some of the jquery validation libraries to more advanced as well. &lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;Notifications to the user that occur after the postback may be tricky without losing your dialog. For simplicity sake to keep with the postback model I’ve sometimes included a label above the hide\show button to display messages about issues that occurred during a postback. It is possible to have the dialog box show on postback by making the JavaScript rendering more intelligent but this starts to compromise the quick aspect of this solution. &lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;SharePoint 2010 provides a new SharePoint specific dialog framework that may be more desirable to use then a third party library.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The complete sample code for this example can be downloaded &lt;a href="http://www.sharepointbrainfreeze.com/files/sitecreationdialog.zip"&gt;here&lt;/a&gt;.  &lt;/p&gt;&lt;hr /&gt;
Technorati tags: &lt;a rel="tag" href="http://technorati.com/tags/SharePoint"&gt;SharePoint&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/jQuery"&gt; jQuery&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/jQueryUI"&gt; jQueryUI&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/WebParts"&gt; WebParts&lt;/a&gt;&lt;img src="http://www.sharepointbrainfreeze.com/aggbug/66.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/SharepointBrainFreeze/~4/IZdhcmAqkoU" height="1" width="1"/&gt;</description>
            <dc:creator>Joshua Carlisle</dc:creator>
            <guid isPermaLink="false">http://www.sharepointbrainfreeze.com/archive/2010/02/01/combining-jquery-ui-dialogs-and-sharepoint-webparts.aspx</guid>
            <pubDate>Mon, 01 Feb 2010 19:54:53 GMT</pubDate>
            <comments>http://www.sharepointbrainfreeze.com/archive/2010/02/01/combining-jquery-ui-dialogs-and-sharepoint-webparts.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://www.sharepointbrainfreeze.com/comments/commentRss/66.aspx</wfw:commentRss>
            <trackback:ping>http://www.sharepointbrainfreeze.com/services/trackbacks/66.aspx</trackback:ping>
        <feedburner:origLink>http://www.sharepointbrainfreeze.com/archive/2010/02/01/combining-jquery-ui-dialogs-and-sharepoint-webparts.aspx</feedburner:origLink></item>
        <item>
            <title>Presenting at the Richmond SharePoint User Group and Webcast</title>
            <category>SharePoint</category>
            <category>SharePoint 2010</category>
            <category>UserGroup</category>
            <category>SharePoint Community</category>
            <link>http://feedproxy.google.com/~r/SharepointBrainFreeze/~3/-aPYInLW2P0/presenting-at-the-richmond-sharepoint-user-group-and-webcast.aspx</link>
            <description>&lt;p&gt;Tomorrow I will be traveling up to Richmond Virginia to present to the Richmond SharePoint User Group. I will be presenting one of my developer discussions on the improved SharePoint 2010 developer experience. &lt;/p&gt;
&lt;p&gt;Date:           &lt;strong&gt;Thursday, January 28 &lt;br /&gt;
&lt;/strong&gt;Time:           5:30 PM:    Meet and Greet &lt;br /&gt;
                   6:00-7:30:  Meeting &lt;br /&gt;
Topic:          Reducing the Friction of SharePoint Development with SharePoint 2010 &lt;br /&gt;
Sponsor:      Fahrenheit Technology &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.clicktoattend.com/?id=144368"&gt;CLICK HERE TO REGISTER&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Additionally I’m trying something new with this meeting. We’re going to attempt a simultaneous webcast with LiveMeeting that will include voice, video, screen and slide sharing. I’ve never attempted a webcast outside of a very controlled environment but if you’re interested in catching my presentation but can’t make it please give it a try and let me know how it goes so I know if its worth doing this for future presentations. You’ll be able to download the entire presentation if you’d like to as well. No registration or code is required to attend the webcast and I’ve opened it up for 100 attendees.&lt;/p&gt;
&lt;p&gt;Live Meeting Conference URL: &lt;a href="https://www.livemeeting.com/cc/usergroups/join?id=KBQ5S4&amp;amp;role=attend"&gt;https://www.livemeeting.com/cc/usergroups/join?id=KBQ5S4&amp;amp;role=attend&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;You’ll need to download the client to get the full experience with sound and video. My experience also was that I had to configure the webcam\audio settings on the client before I could see\hear myself in test runs. So if you’ve never installed the LiveMeeting client I would suggest logging on a few minutes early so you have time to configure your preferences. I plan to use a wireless microphone along with a HD webcam when my desktop isn’t being shared so I’m hoping the experience should be good if our network connection can handle it. &lt;/p&gt;
&lt;p&gt;I’m looking forward to presenting and I’m looking forward to seeing both folks in Richmond and in LiveMeeting tomorrow!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;UPDATE:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#ff0000"&gt;I apologize for the folks who attended last nights web cast and experience connection issues. The original plan for the web cast included a LAN connection at the User Group meeting location. Unfortunatly the stars didn't line up and the local resource wasn't available to provide me that connection. I attempted to use my Verizon Wireless card but lets say the performance was less then stellar.  On the next go around I'll make sure we have a good connection. I do appreciate the folks who gave it a try, hopefully we'll have better luck next time.&lt;/font&gt;&lt;/p&gt;
&lt;hr /&gt;
Technorati tags: &lt;a rel="tag" href="http://technorati.com/tags/User+Group"&gt;User Group&lt;/a&gt;&lt;hr /&gt;
Technorati tags: &lt;a rel="tag" href="http://technorati.com/tags/SharePoint+2010"&gt;SharePoint 2010&lt;/a&gt;&lt;hr /&gt;
Technorati tags: &lt;a rel="tag" href="http://technorati.com/tags/SharePoint"&gt;SharePoint&lt;/a&gt;&lt;img src="http://www.sharepointbrainfreeze.com/aggbug/65.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/SharepointBrainFreeze/~4/-aPYInLW2P0" height="1" width="1"/&gt;</description>
            <dc:creator>Joshua Carlisle</dc:creator>
            <guid isPermaLink="false">http://www.sharepointbrainfreeze.com/archive/2010/01/27/presenting-at-the-richmond-sharepoint-user-group-and-webcast.aspx</guid>
            <pubDate>Wed, 27 Jan 2010 19:09:15 GMT</pubDate>
            <comments>http://www.sharepointbrainfreeze.com/archive/2010/01/27/presenting-at-the-richmond-sharepoint-user-group-and-webcast.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://www.sharepointbrainfreeze.com/comments/commentRss/65.aspx</wfw:commentRss>
            <trackback:ping>http://www.sharepointbrainfreeze.com/services/trackbacks/65.aspx</trackback:ping>
        <feedburner:origLink>http://www.sharepointbrainfreeze.com/archive/2010/01/27/presenting-at-the-richmond-sharepoint-user-group-and-webcast.aspx</feedburner:origLink></item>
        <item>
            <title>Upgrading Features with SharePoint 2010</title>
            <category>SharePoint 2010</category>
            <category>SharePoint</category>
            <link>http://feedproxy.google.com/~r/SharepointBrainFreeze/~3/sgCQqSx_OAU/upgrading-features-with-sharepoint-2010.aspx</link>
            <description>&lt;p&gt;One topic I’ve been somewhat surprised to not hear more then a trickle about from the community about SharePoint 2010 is the ability to upgrade Features. Features were of course introduced in SharePoint 2007 as a mechanism for provisioning elements within SharePoint. Those elements can be anything from Site Columns, Content Types, and Lists to Webparts and workflows just to name a few. It’s quite a powerful mechanism for provisioning reusable elements within SharePoint but one if its weaknesses has been the inability to formally support an upgrade process. Now that’s not to say that you couldn’t work around the issue but it was never elegant.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Old Technique #1 – Upgrade Feature In Place then Deactivate\Reactivate (Unsupported)&lt;/strong&gt; &lt;br /&gt;
Although unsupported some elements of a feature didn't mind getting deactivated and reactivated to get an “update”. Although this technique is unsupported it could be used in scenarios where the provisioning engine could handle conflict resolution such as provisioning a file using the &lt;a href="http://msdn.microsoft.com/en-us/library/ms459213.aspx"&gt;IgnoreIfAlreadyExists&lt;/a&gt; attribute on the File element of the Module element. However most elements such as Lists and Content Types will often throw exceptions during activation if there was a conflict so you had to be very careful in its usage. Not ideal at all. &lt;/p&gt;
&lt;p&gt;The following is a table of a few of the common elements and how they deal with getting unprovisioned (deactivated). Keep in mind that there are many more elements within a feature that may be declared such as list definitions, controls, custom actions, etc., but these are just declarations not instances. &lt;/p&gt;
&lt;table border="0" cellspacing="0" cellpadding="2"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td style="BACKGROUND-COLOR: gainsboro" valign="top"&gt;Element&lt;/td&gt;
            &lt;td style="BACKGROUND-COLOR: gainsboro" valign="top"&gt;Behavior&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top"&gt;Content Type&lt;/td&gt;
            &lt;td valign="top"&gt;Unprovisioned **&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top"&gt;Field&lt;/td&gt;
            &lt;td valign="top"&gt;Unprovisioned **&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top"&gt;List Instance&lt;/td&gt;
            &lt;td valign="top"&gt;NOT Unprovisioned&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top"&gt;Module (File)&lt;/td&gt;
            &lt;td valign="top"&gt;NOT Unprovisioned&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top"&gt;ContentTypeBindng&lt;/td&gt;
            &lt;td valign="top"&gt;NOT Unprovisioned&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;font size="2"&gt;** These items will get unprovisioned but artifact may be left behind if instance of these definitions were already used.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="lightbox" href="http://www.sharepointbrainfreeze.com/images/www_sharepointbrainfreeze_com/WindowsLiveWriter/UpgradingFeatureswithSharePoint2010_149F3/brickwall_2.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px 15px 0px 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="brickwall" border="0" alt="brickwall" align="left" width="271" height="271" src="http://www.sharepointbrainfreeze.com/images/www_sharepointbrainfreeze_com/WindowsLiveWriter/UpgradingFeatureswithSharePoint2010_149F3/brickwall_thumb.jpg" /&gt;&lt;/a&gt;As you can see this can get messy quickly. So please don’t go hitting your head against a brick wall when trying to understand why artifacts get left behind after you reactivate\deactivate your feature and you don’t get the expected results. I like to use an analogy that many developers are more familiar with – SQL Scripts. If you run a SQL script that creates a table and then update the SQL Script with a new column does the table get update – No. You have to upgrade the script to run an alter table SQL command. SharePoint is the same, once you create an instance of something you have to do something “different” to update it. Additionally SharePoint is very careful when it comes to removing elements upon deactivation of the parent feature, nobody likes data disappearing on them unexpectedly. Now it would be nice if it could perform some more advanced differencing\appending logic but unfortunately that isn’t the case (and still isn’t much with SharePoint 2010). Needless to say though this has been a sore point for many developers getting into Feature development for the first time.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Old Technique #2 – New Feature With Version Numbers (Supported) &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
Another common technique is to build multiple Features to mimic an upgrade process. This typically lead to Features with names such as “My Feature 1.0” and “My Feature 1.1” and so on and so forth. Although this worked this could get very messy very quickly and almost always led to code heavy Feature Receivers to get around the lack of conflict resolution in the provisioning engine. You could use &lt;a href="http://msdn.microsoft.com/en-us/library/aa543162.aspx"&gt;Feature Dependencies&lt;/a&gt; to try to enforce a particular order but in the end you ended up creating your own upgrade engine\schema. Once again far from ideal.&lt;/p&gt;
&lt;h6&gt;&lt;font size="4"&gt;Welcome to SharePoint 2010 &lt;br /&gt;
&lt;/font&gt;&lt;/h6&gt;
&lt;p&gt;So what's the big deal with with Features in SharePoint 2010? Well first off we can now make use of that previously useless &lt;a href="http://msdn.microsoft.com/en-us/library/ms436075.aspx"&gt;Version&lt;/a&gt; attribute on the Feature element. Secondly, through the use of the Version attribute, SharePoint now provides the core framework for upgrading features. To support this framework SharePoint now keeps track of the version of a Feature each time it’s activated, for each scope, for each site. By keeping track of the version it can apply rules that are defined for different versions of the feature. You can also take advantage of a new query method to gain more control over who gets upgraded.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;lt;UpgradeActions&amp;gt; Defining How To Upgrade – The Anatomy of the UpgradeActions Element&lt;/strong&gt;  &lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Feature&lt;/span&gt; &lt;span class="attr"&gt;Id&lt;/span&gt;&lt;span class="kwrd"&gt;="817224F9-2209-4965-B18D-B73CA86AEFCA"&lt;/span&gt;
        &lt;span class="attr"&gt;Title&lt;/span&gt;&lt;span class="kwrd"&gt;="My Feature"&lt;/span&gt; 
        &lt;span class="attr"&gt;Description&lt;/span&gt;&lt;span class="kwrd"&gt;="My Feature Details"&lt;/span&gt; 
       &lt;strong&gt; &lt;span class="attr"&gt;Version&lt;/span&gt;&lt;span class="kwrd"&gt;="2.0.0.0"&lt;/span&gt;&lt;/strong&gt;
        &lt;span class="attr"&gt;Scope&lt;/span&gt;&lt;span class="kwrd"&gt;="Site"&lt;/span&gt; 
        &lt;span class="attr"&gt;Hidden&lt;/span&gt;&lt;span class="kwrd"&gt;="FALSE"&lt;/span&gt;
        &lt;span class="attr"&gt;DefaultResourceFile&lt;/span&gt;&lt;span class="kwrd"&gt;="core"&lt;/span&gt;
        &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://schemas.microsoft.com/sharepoint/"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ElementManifests&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ElementManifest&lt;/span&gt; &lt;span class="attr"&gt;Location&lt;/span&gt;&lt;span class="kwrd"&gt;="Elements.xml"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ElementManifest&lt;/span&gt; &lt;span class="attr"&gt;Location&lt;/span&gt;&lt;span class="kwrd"&gt;="Elements2.xml"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ElementManifests&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;strong&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;UpgradeActions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;VersionRange&lt;/span&gt; &lt;span class="attr"&gt;EndVersion&lt;/span&gt;&lt;span class="kwrd"&gt;="2.0.0.0"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ElementManifests&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ElementManifest&lt;/span&gt; &lt;span class="attr"&gt;Location&lt;/span&gt;&lt;span class="kwrd"&gt;="Elements2.xml"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ElementManifests&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;VersionRange&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;UpgradeActions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/strong&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Feature&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;The &amp;lt;UpgradeActions&amp;gt; action is the core to the new Feature upgrade framework and adds several new elements in the Feature.xml that define the behavior of the upgrade process including &lt;em&gt;VersionRange&lt;/em&gt;, &lt;em&gt;ApplyElementManifests&lt;/em&gt;, &lt;em&gt;AddContentTypeField&lt;/em&gt;, &lt;em&gt;MapFile&lt;/em&gt;, &lt;em&gt;CustomUpgradeAction&lt;/em&gt;. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;VersionRange &lt;br /&gt;
&lt;/strong&gt;The version range element defines the version range at which the UpgradeAction is applied. The BeginVersion and EndVersion attribute define the affected version. Multiple VersionRange elements are permitted to apply different upgrade rules to different versions of the feature. If you do not provide a BeginVersion the version range applies all versions up to the version specified in the EndVersion.&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;UpgradeActions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;VersionRange&lt;/span&gt; &lt;strong&gt;&lt;span class="attr"&gt;BeginVersion&lt;/span&gt;&lt;span class="kwrd"&gt;="2.0.0.0"&lt;/span&gt; &lt;span class="attr"&gt;EndVersion&lt;/span&gt;&lt;span class="kwrd"&gt;="2.5.0.0"&lt;/span&gt;&lt;/strong&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ElementManifests&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ElementManifest&lt;/span&gt; &lt;span class="attr"&gt;Location&lt;/span&gt;&lt;span class="kwrd"&gt;="Fields.xml"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ElementManifests&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;VersionRange&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;UpgradeActions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;
&lt;p&gt;&lt;strong&gt;&lt;br /&gt;
ApplyElementsManifests&lt;/strong&gt; &lt;br /&gt;
From a declarative upgrade standpoint the ApplyElementsManifests will be your opportunity to provision additional elements. Any valid element is permitted just as with a standard Feature. Keep in mind that the manifest will also need to be defined in the standard ElementManifests section of the Feature.xml as well as in the VersionRange ApplyElementsManifests elements.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AddContentTypeField &lt;br /&gt;
&lt;/strong&gt;Content Types are a very powerful feature within SharePoint 2007 that allows you to declare reusable collections of meta data (columns) that can be reused across the site collection in any list. One nice feature of Content Types is the ability to push updates, such as new columns, to any list making use of the Content Type. Unfortunately from a declarative provisioning standpoint once your Feature declares a Content Type and its Site Columns (fields\columns) in SharePoint 2007 there was no out of the box mechanism to declaratively add new Site Columms to the Content Type. You had to use a Feature Receiver to drop down to code to do this. &lt;br /&gt;
&lt;br /&gt;
With SharePoint 2010 you now can add additional Site Columns to a Content Type through the UpgradeActions element: &lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;UpgradeActions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;VersionRange&lt;/span&gt; &lt;span class="attr"&gt;BeginVersion&lt;/span&gt;&lt;span class="kwrd"&gt;="2.0.0.0"&lt;/span&gt; &lt;span class="attr"&gt;EndVersion&lt;/span&gt;&lt;span class="kwrd"&gt;="2.5.0.0"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ElementManifests&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ElementManifest&lt;/span&gt; &lt;span class="attr"&gt;Location&lt;/span&gt;&lt;span class="kwrd"&gt;="NewFields.xml"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ElementManifests&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;AddContentTypeField&lt;/span&gt; &lt;span class="attr"&gt;ContentTypeId&lt;/span&gt;&lt;span class="kwrd"&gt;="0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007"&lt;/span&gt; 
                                              &lt;span class="attr"&gt;FieldId&lt;/span&gt;&lt;span class="kwrd"&gt;="{2ADDDEF9-3832-49B4-A5C4-CEDE34C37FDF}"&lt;/span&gt;  
                                              &lt;span class="attr"&gt;PushDown&lt;/span&gt;&lt;span class="kwrd"&gt;="TRUE"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;VersionRange&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;UpgradeActions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;
&lt;p&gt;&lt;br /&gt;
In this example we’re applying a new elements manifest that creates a new field and then adding that field to a previously defined content type and instructing the update to be pushed down to each instance of the content type being used (pushing down the update).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;MapFile&lt;/strong&gt; &lt;br /&gt;
MapFile allows you to change the path or name of an existing file you provisioned to a new location. This can be useful, if for example, you decided to change the path of your images folder from pictures\img.gif to images\img.gif. Not very handy on the surface but could be usefull in specific scenarios.  If you’re defining module elements in a Feature you’ve likely already identified that a feature is going to get some reuse. Modules (files) provisioned by a feature live in the file system (until possibly customization) which means you’ll get some performance benefits as well. If you then want to upgrade the “virtual” location of these files within SharePoint you now have a mechanism to apply this change across the board. A bit niche but none the less handy.&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;MapFile&lt;/span&gt; &lt;span class="attr"&gt;FromPath&lt;/span&gt;&lt;span class="kwrd"&gt;="Pictures\Image.gif"&lt;/span&gt; &lt;span class="attr"&gt;ToPath&lt;/span&gt;&lt;span class="kwrd"&gt;="Images\Image.gif"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd" /&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;&lt;em&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;br /&gt;
NOTE: During the first private beta I had the impression this applied to customized elements as well. I thought this would be a great feature to get control of a customized files but unfortunately this isn’t the case. I had mentioned this in a couple of my initial presentations on the subject so I wanted to clarify\correct in case you were in one of my sessions. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;/blockquote&gt;&lt;/em&gt;
&lt;p&gt;&lt;br /&gt;
&lt;strong&gt;CustomUpgradeAction &lt;br /&gt;
&lt;/strong&gt;Similar to the use of Feature Receivers to drop to code during the activation process the CustomUpgradeAction allows you to drop to code during an upgrade process. For example if you wanted to update existing instances of a list with additional views or possibly additional columns (if you didn’t use ContentTypes). This uses the existing Feature Receiver framework but works off a new function SPFeatureReceiver.FeatureUpgrading.&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;UpgradeActions&lt;/span&gt;
    &lt;span class="attr"&gt;ReceiverAssembly&lt;/span&gt;&lt;span class="kwrd"&gt;="ShinyNewFeatureReceiver, Version=1.0.0.0, Culture=neutral, PublicKeyToken=3ef91b1292056a22"&lt;/span&gt; 
    &lt;span class="attr"&gt;ReceiverClass&lt;/span&gt;&lt;span class="kwrd"&gt;="ShinyNewFeatureReceiver.MyReceiver"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;VersionRange&lt;/span&gt; &lt;span class="attr"&gt;EndVersion&lt;/span&gt;&lt;span class="kwrd"&gt;="2.0.0.0"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;CustomUpgradeAction&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="RemoveField"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Parameters&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Parameter&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="ContentType"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;MemberProfile&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Parameter&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Parameter&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="FieldName"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;SSN&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Parameter&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Parameters&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;CustomUpgradeAction&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;VersionRange&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;UpgradeActions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
]]&gt;&lt;/style&gt;&lt;style type="text/css"&gt;&lt;![CDATA[csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
]]&gt;&lt;/style&gt;
&lt;p&gt;&lt;br /&gt;
&lt;span class="kwrd"&gt;CustomUpgradeActions allow you to perform actions that fall out of scope of the out of the box upgrade actions. In the example above we want to remove the SSN field from the MemberProfile content type. CustomUpgradeActions are defined in a SPFeatureReceiver as a new method called &lt;a href="http://msdn.microsoft.com/en-us/library/ee537575(office.14).aspx"&gt;FeatureUpgrading&lt;/a&gt;. The following is a snippet on its usage building on the above example and simplified a bit.&lt;/span&gt;&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; FeatureUpgrading(SPFeatureReceiverProperties properties, &lt;span class="kwrd"&gt;string&lt;/span&gt; upgradeActionName, IDictionary&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; parameters)
{

    SPWeb web = thisFeature.Parent &lt;span class="kwrd"&gt;as&lt;/span&gt; SPWeb;

    &lt;span class="kwrd"&gt;if&lt;/span&gt;(upgradeActionName == &lt;span class="str"&gt;"RemoveField"&lt;/span&gt;)
    {
                &lt;span class="kwrd"&gt;string&lt;/span&gt; contentTypeName = parameters[&lt;span class="str"&gt;"ContentType"&lt;/span&gt;];
                &lt;span class="kwrd"&gt;string&lt;/span&gt; fieldName = parameters[&lt;span class="str"&gt;"FieldName"&lt;/span&gt;];

                SPContentType contentType = web.RootWeb.ContentTypes[contentTypeName];
                contentType.Fields[fieldName].Delete();
                contentType.Update(&lt;span class="kwrd"&gt;true&lt;/span&gt;);

     }
 
}
  
&lt;span class="kwrd" /&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;ActivationDependencies &lt;/strong&gt;&lt;br /&gt;
ActivationDependencies are available in SharePoint 2007 and SharePoint 2010 but in order to support the versioning concept have been adapted in SharePoint 2010 to specify the Minimum Version required for the dependency. So you could place an activation dependency on the 2.0.0.0 version of another Feature in case you are dependant on a new element in the latest version. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Querying for Features &lt;br /&gt;
&lt;/strong&gt;In addition to the core upgrade action elements there are additional tools available through the API that allow you to programmatically query for features within a designated scope. Using the QueryFeatures method you can query for features based on the Feature ID, the scope, features yet to be upgraded, and features by version. This can be useful in cases where you want to have more fine control over which sites receive an upgrade. More details can be found on &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsite.queryfeatures(office.14).aspx"&gt;MSDN&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Some Final Thoughts&lt;/strong&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;a rel="lightbox" href="http://www.sharepointbrainfreeze.com/images/www_sharepointbrainfreeze_com/WindowsLiveWriter/UpgradingFeatureswithSharePoint2010_149F3/mytwocents_4.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px 15px 5px 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="mytwocents" border="0" alt="mytwocents" align="left" width="244" height="152" src="http://www.sharepointbrainfreeze.com/images/www_sharepointbrainfreeze_com/WindowsLiveWriter/UpgradingFeatureswithSharePoint2010_149F3/mytwocents_thumb_1.jpg" /&gt;&lt;/a&gt; It’s great to see the Feature Upgrade path now available and although it may mean more work and planning we have a standard and supported methodology for upgrading our Features which should help out greatly for lifecycle management of your SharePoint environment and SharePoint applications. For that I’m thankful – a good step forward in the right direction. &lt;br /&gt;
&lt;br /&gt;
Saying that I still question some of Microsoft’s direction when it comes to Feature upgrades. I think it would have been more appropriate to build in a more reusable provisioning framework into the Feature framework to allow us to define more flexible actions that could be reused across features (and possibly built on by the community), beyond that of just UpgradeActions. Instead of giving us a couple of new elements that may or may not be useful for many common scenarios they could have built us something flexible so it could be adapted to be more robust if needed. I think the feature receiver is meant to address this scenario but I would have rather seen something more a kin to how MSBuild works in addition to feature receivers.  Allow me to build and register a custom assembly with the feature that adds a new reusable element to the feature.xml to add new ways to customize the provisioning process. With this framework something like the UpgradeActions elements could have been a value add on top of the flexible provisioning engine. That way I wouldn’t have to wait for each release every 3 years for improvements to the Features framework. &lt;/p&gt;&lt;hr /&gt;
Technorati tags: &lt;a rel="tag" href="http://technorati.com/tags/SharePoint"&gt;SharePoint&lt;/a&gt;&lt;hr /&gt;
Technorati tags: &lt;a rel="tag" href="http://technorati.com/tags/SharePoint+2010"&gt;SharePoint 2010&lt;/a&gt;
&lt;/blockquote&gt;&lt;img src="http://www.sharepointbrainfreeze.com/aggbug/64.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/SharepointBrainFreeze/~4/sgCQqSx_OAU" height="1" width="1"/&gt;</description>
            <dc:creator>Joshua Carlisle</dc:creator>
            <guid isPermaLink="false">http://www.sharepointbrainfreeze.com/archive/2010/01/18/upgrading-features-with-sharepoint-2010.aspx</guid>
            <pubDate>Mon, 18 Jan 2010 21:52:25 GMT</pubDate>
            <comments>http://www.sharepointbrainfreeze.com/archive/2010/01/18/upgrading-features-with-sharepoint-2010.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://www.sharepointbrainfreeze.com/comments/commentRss/64.aspx</wfw:commentRss>
            <trackback:ping>http://www.sharepointbrainfreeze.com/services/trackbacks/64.aspx</trackback:ping>
        <feedburner:origLink>http://www.sharepointbrainfreeze.com/archive/2010/01/18/upgrading-features-with-sharepoint-2010.aspx</feedburner:origLink></item>
        <item>
            <title>Switched My Blogging Platform &amp;ndash; Sorry SharePoint</title>
            <category>SharePoint</category>
            <category>Rant</category>
            <link>http://feedproxy.google.com/~r/SharepointBrainFreeze/~3/A2BYkonwc5o/switched-my-blogging-platform-ndash-sorry-sharepoint.aspx</link>
            <description>&lt;p&gt;&lt;br /&gt;
&lt;a rel="lightbox" href="http://www.sharepointbrainfreeze.com/images/www_sharepointbrainfreeze_com/WindowsLiveWriter/SwitchedMyBloggingPlatformSorrySharePoin_FE42/breenpastures_2.jpg"&gt;&lt;img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px 15px 15px 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="breenpastures" border="0" alt="breenpastures" align="left" width="301" height="198" src="http://www.sharepointbrainfreeze.com/images/www_sharepointbrainfreeze_com/WindowsLiveWriter/SwitchedMyBloggingPlatformSorrySharePoin_FE42/breenpastures_thumb.jpg" /&gt;&lt;/a&gt; I decided last week to abandon my current blogging platform in search of greener pastures. Being a SharePoint developer, hell a SharePoint evangelist, I really thought I had to be on the SharePoint platform to make a point. Unfortunately it didn’t work out as well as I had hoped. I had upgraded my out of the box SharePoint Blog (slightly modified) to the Community Kit for SharePoint Enhanced Blog Edition ( &lt;a href="http://cks.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=5134"&gt;CKS:EBE&lt;/a&gt;) several months back. The developers did a lot of great enhancements to the platform, it’s a huge upgrade from the standard Blog site definition and I still believe its a powerful and appropriate solution for a corporate environment and for some bloggers out there. With some more work it could be a great blogging platform but I don’t think its quite there yet.&lt;/p&gt;
&lt;p&gt;For me though it came down the simple fact that I needed a more powerful dedicated blogging platform. The user interface is important and some post UI enhancements are really needed for the CKS:EBE but the spam is what has been a huge problem for me in the last year&lt;a rel="lightbox" href="http://www.sharepointbrainfreeze.com/images/www_sharepointbrainfreeze_com/WindowsLiveWriter/SwitchedMyBloggingPlatformSorrySharePoin_FE42/spam_2.jpg"&gt;&lt;img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; MARGIN-LEFT: 0px; BORDER-TOP: 0px; MARGIN-RIGHT: 0px; BORDER-RIGHT: 0px" title="spam" border="0" alt="spam" align="right" width="192" height="192" src="http://www.sharepointbrainfreeze.com/images/www_sharepointbrainfreeze_com/WindowsLiveWriter/SwitchedMyBloggingPlatformSorrySharePoin_FE42/spam_thumb.jpg" /&gt;&lt;/a&gt; to the extent where I’ve had to disable trackbacks\pingbacks and turn off comments for the most part because I don’t have enough time to moderate the comments. Spending a couple hours hunting for the good comment in the endless sea of SPAM comments isn’t really an option for me. It turned my blog into a one way information source – not my goal at all. The two methods the CKS:EBE appear to use currently, CAPTCHA and Akismet - both solid solutions, never seemed to work correctly. CAPTCHA wouldn’t render in some scenarios and Akismet seemed to be ineffective or not implemented correctly for neither post comments nor trackbacks.  Now I know spam is not a problem exclusive to the CKS:EBE its a problem that every blogging platform has to deal with. Saying that other platforms seemed to have had much more success with those same tools and have brought other techniques to the battle. &lt;/p&gt;
&lt;p&gt;After some investigation and tinkering around I decided on &lt;a href="http://subtextproject.com/Default.aspx?AspxAutoDetectCookieSupport=1"&gt;SubText&lt;/a&gt;over  &lt;a href="http://wordpress.org/download/"&gt;WordPress&lt;/a&gt;. Not really from any feature standpoint-  from what I understand WordPress may have some points over SubText. It turned out to be the underlying platform that sold me.  I’ve had enough fun on Apache while working with subversion, I don’t need any more of that kind of fun.  I really didn’t want to go down that road for my blogging platform, features be damned its just to much of a pain in the butt and out of my comfort zone for customizations. So far SubText has been a breeze to configure and customize, here is hoping the real test – it holds up to deluge of spam that will be hitting it over the next few weeks.&lt;/p&gt;
&lt;p&gt;As for the CKS:EBE my goal isn’t to bash the project or the developers that have contributed there own time to it and I haven’t given up on it. I know there is still active development going on and being on the SharePoint platform it has HUGE amounts of potential – its just not quite there yet. I hope the CKS:EBE team continues to build and improve, I think its the best option for a SharePoint blogging platform.  If I had more time I’d work around some of the issues and maybe make some improvements but for the time being I don’t want the blogging platform to keep getting in the way of blogging! Its just not about the technology in this case, its about the message. &lt;/p&gt;&lt;hr /&gt;
Technorati tags: &lt;a rel="tag" href="http://technorati.com/tags/Community+Kit For SharePoint"&gt;Community Kit For SharePoint&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/CKS"&gt; CKS&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Blog"&gt; Blog&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Spam"&gt; Spam&lt;/a&gt;&lt;hr /&gt;
Technorati tags: &lt;a rel="tag" href="http://technorati.com/tags/SubText"&gt;SubText&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/WordPress"&gt; WordPress&lt;/a&gt;&lt;img src="http://www.sharepointbrainfreeze.com/aggbug/63.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/SharepointBrainFreeze/~4/A2BYkonwc5o" height="1" width="1"/&gt;</description>
            <dc:creator>Joshua Carlisle</dc:creator>
            <guid isPermaLink="false">http://www.sharepointbrainfreeze.com/archive/2010/01/15/switched-my-blogging-platform-ndash-sorry-sharepoint.aspx</guid>
            <pubDate>Fri, 15 Jan 2010 23:05:02 GMT</pubDate>
            <comments>http://www.sharepointbrainfreeze.com/archive/2010/01/15/switched-my-blogging-platform-ndash-sorry-sharepoint.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://www.sharepointbrainfreeze.com/comments/commentRss/63.aspx</wfw:commentRss>
            <trackback:ping>http://www.sharepointbrainfreeze.com/services/trackbacks/63.aspx</trackback:ping>
        <feedburner:origLink>http://www.sharepointbrainfreeze.com/archive/2010/01/15/switched-my-blogging-platform-ndash-sorry-sharepoint.aspx</feedburner:origLink></item>
        <item>
            <title>The SharePoint 2010 Developer Experience</title>
            <category>SharePoint</category>
            <category>SharePoint 2010</category>
            <link>http://feedproxy.google.com/~r/SharepointBrainFreeze/~3/ASParVS3C3g/TheSharePoint2010DeveloperExperience.aspx</link>
            <description>&lt;div class="ExternalClassD104266BACB1401F8D00B52B3DA1B9A2"&gt;
&lt;p&gt;I’m a developer at heart. I think i will always be a developer at heart. For those folks who haven’t been in my presentations or know me personally I’ve been known to get a little giddy when I start talking geek. Yes I can play other roles – architect, team lead, tech lead, business analyst, manager (cough!) but development will always be my passion. When I am old and gray, probably sitting in a boring management\executive position because my mind has been turned into chum from years of keeping up with the technology grind i will probably still be cruising through the forums and developer blogs. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.sharepointbrainfreeze.com/Lists/Posts/Attachments/61/olddog_2_0643A725.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; MARGIN: 15px 15px 15px 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="old-dog" border="0" alt="old-dog" align="left" width="161" height="240" src="/Images/blog_viewfusion_local/Archive/SharePoint2010DevExperience/olddog_thumb_0643A725.jpg" /&gt;&lt;/a&gt; In the last several years, as a SharePoint developer and&lt;a href="http://www.sharepointbrainfreeze.com/Lists/Posts/Attachments/61/broken_keyboard_2_0643A725.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; MARGIN: 15px 0px 15px 15px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="broken_keyboard" border="0" alt="broken_keyboard" align="right" width="188" height="240" src="/Images/blog_viewfusion_local/Archive/SharePoint2010DevExperience/broken_keyboard_thumb_0643A725.jpg" /&gt;&lt;/a&gt; architect, you could measure that chum/burn rate on my brain in dog years - you know 1 human year = 7 dog years. This is mostly due to the fact that SharePoint development has historically been very painful, often involving lots of pounding of fists (and sometimes foreheads) on tables (I’ll leave the churn rate on broken peripherals and office furniture for another post lol). &lt;/p&gt;
&lt;p&gt;Now to be fair the picture got a bit better in SharePoint 2007 but it still maybe turned that down to a 1/5 year ratio and that ratio was really more due to the communities awesome contributions to the SharePoint developer space then any particular effort from Microsoft. Now with SharePoint 2010 I would now lower that ratio even further to 1/2.5 and this time it’s in large part related to efforts by Microsoft in that area – finally! Now its not perfect but still a big jump in my opinion. Although you may not agree with me you can’t deny that Microsoft has FINALLY put more then just token resources on the developer experience.&lt;/p&gt;
&lt;p&gt;So why is it that I am so excited about this release:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;em&gt;&lt;strong&gt;Visual Studio Experience&lt;/strong&gt;&lt;/em&gt; – I think everyone recognizes (or should) that Microsoft isn’t going to develop the end-all-be-all toolset. Its just too cost prohibitive for even Microsoft. Saying that its still no reason that a baseline toolset shouldn’t be established. With a strong foundation, just like a framework, it can grow more powerful over time via contributions from not only Microsoft but the community and third party vendors as well. Microsoft has recognized that and as a result SharePoint 2010 is now finally a first class citizen in Visual Studio. With Visual Studio 2010 and SharePoint 2010 they have provided this base foundation for the Visual Studio experience that both provides a minimal subset of functionality and arguably just as important - a solid\extensible framework to build upon. &lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;As part of this toolset you now have out of the box:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;A SharePoint specific project format that supports the concepts of Packages (WSP), Features, and elements. &lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;SharePoint specific project items such as webparts, visual webparts, workflows, content types, etc. &lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;“F5” debugging support with pre-configured AND configurable deployments steps such as resetting worker processes (clearing GAC), creating solution packages, deploying solution packages, activating features, attaching to a debugger etc. &lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;Visual designers for configuring both packages and features that allow for both designer based configuration and just as importantly the combining of configuration that the designer doesn’t support with custom configuration elements. &lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;SharePoint Explorer for browsing through a SharePoint site’s artifacts' such as fields, content types, lists, etc. &lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;
&lt;p&gt;Instead of having to make the difficult choice of what community toolset (or home grown) your organization standardizes on you can depend on the strong foundation that Visual Studio 2010 provides for SharePoint developers.&lt;/p&gt;
&lt;p&gt;Lastly, a good tool understands that the common tasks should&lt;a href="http://www.sharepointbrainfreeze.com/Lists/Posts/Attachments/61/squarepegroundhole_2_0643A725.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; MARGIN: 15px 0px 15px 15px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="square-peg-round-hole" border="0" alt="square-peg-round-hole" align="right" width="168" height="240" src="/Images/blog_viewfusion_local/Archive/SharePoint2010DevExperience/squarepegroundhole_thumb_0643A725.jpg" /&gt;&lt;/a&gt; be made easy but the tool should still allow access to the complex stuff under the hood. Don’t make me have to beat the tool into submission just because the original creator hadn’t had time or thought of my scenerio. Make it easy for me to change my oil but still let me drop a new transmission in if I need to. This is where I believe that Visual Studio Extensions for WSS (VSeWSS) went wrong and was never really able to overcome. This is solidly not the case with Visual Studio 2010 and SharePoint 2010.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;em&gt;&lt;strong&gt;“Developer Continuum”&lt;/strong&gt;&lt;/em&gt; – In SharePoint 2010 the developer continuum refers to the ability for all the tools in the SharePoint toolbox (Browser, SharePoint Designer, Visual Studio) to be able to work together in a cooperative way and “hand-off” artifacts from one tool to another regardless of the life-cycle. &lt;br /&gt;
    &lt;br /&gt;
    In 2007 this continuum didn’t exist. The toolset didn’t support the concept out of the box which meant once again relying on community solutions or forcing existing toolsets to be manipulated with often unexpected results. Several community projects built windows to this data through several tools (stsadm extension, windows apps) but the process was still fairly manual to get those artifacts into your project. One of the core issues, outside of developing a bruit force pure API extraction implementation, was that customizations (browser or SPD) were stored in a site template format and custom solutions were stored in a solution package format. &lt;br /&gt;
    &lt;br /&gt;
    With SharePoint 2010 Site Templates are now stored in the same format as solution packages (they actually share the same extension now – wsp). This allows for tools such as Visual Studio to provide a native and compatible format for identifying artifact in a package to be imported into a project. This will allow for many types of browser and SPD based customizations to be imported in as SharePoint artifacts\elements, associated with a feature and repackaged with enhancements back into a solution package. With the addition of the ability to upgrade Features a true lifecycle process is now available to the SharePoint development platform. &lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;&lt;em&gt;"Web Standards”&lt;/em&gt;&lt;/strong&gt; – Now i don’t harp on MS for there lack of standards too much but I do battle it quite regularly. I don’t blame Microsoft (well at least not too much lol) for some of their lack of design standards when it came to their use of CSS and table based layouts. Others however may harp on SharePoint 2007 for its lack of “web 2.0 features” but you need to remember at the time of SharePoint 2007’s development (probably 2004-2006) Web 2.0 features and CSS design methodologies were not mainstream yet as many of the standards\techniques we come to accept today. &lt;br /&gt;
    &lt;br /&gt;
    With SharePoint 2010 Microsoft has taken a significant step forward and removed the table based layouts and updated much of their default implementations to CSS based layout standards and improved use of CSS and XHTML compliant rendered code. That's not to say old masterpages will break, you can still run in a compatibility mode but going forward as a developer you’ll be in much better shape. &lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Business Data Connections&lt;/strong&gt; – This is not a new concept. Business Data Catalog (the original name) was introduced in SharePoint 2007. Whats important in SharePoint 2010 is that elements of it have been “demoted” (or promoted depending on your perspective) down to the core framework – SharePoint Foundation 2010 (Formerly WSS). In this case demotion is a good thing. This gives the underlying framework the out of the box ability to integrate with external systems and recognizes the importance of this functionality as a core tenant of SharePoint. External Lists and external data columns are now available. The server product adds value on top of this functionality as it should but SharePoint Foundation is now able to work more seamlessly with outside systems and just as importantly Visual Studio provides the project types to support this. &lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Developer Dashboard&lt;/strong&gt; – Have you ever spent hours trying to diagnose performance issues on a SharePoint page? Trying to find out what component is misbehaving can be very time consuming. The new SharePoint Developer Dashboard is like asp.net tracing information on steroids and tweaked just for SharePoint. You can find out a lot of diagnostic information about different aspects of your page and your pages components such as: &lt;br /&gt;
    &lt;ol&gt;
        &lt;li&gt;Request/Response cycle timings for every operations &lt;/li&gt;
        &lt;li&gt;response time for database queries &lt;/li&gt;
        &lt;li&gt;Load times for each webpart on this page &lt;/li&gt;
    &lt;/ol&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;With this tool for example you could identify a misbehaving webpart and find out that it has an inefficient query against a list or that the list is missing an index it should have available. Absolutely priceless tool to have when the situation arises. &lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.sharepointbrainfreeze.com/Lists/Posts/Attachments/61/devdashboard_2_0643A725.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="devdashboard" border="0" alt="devdashboard" width="639" height="421" src="/Images/blog_viewfusion_local/Archive/SharePoint2010DevExperience/devdashboard_thumb_0643A725.png" /&gt;&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;strong&gt;Developer Edition (Windows 7)&lt;/strong&gt; – SharePoint 2010 now supports the ability for a workstation installation on Windows 7 or Windows Vista. This is for development purposes and isn’t supported for production environments. For many folks, especially new SharePoint developers, this is a big win and well overdue. Sometimes licensing for the server OS product can be prohibitive or the extra hardware required for virtual machines especially for small shops. &lt;br /&gt;
    &lt;br /&gt;
    Saying that I would argue that for serious SharePoint development you’re still going to be working on a virtual machine and you’re still going to be running a server OS. It’s always the best idea to develop as close to your target deployment platform as you can and that paired with the typically frequent need to refresh your environment - a workstation install could become a real headache. &lt;br /&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;The Grass isn’t always greener! &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.sharepointbrainfreeze.com/Lists/Posts/Attachments/61/married_greener_grass_750_2_0643A725.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px 15px 15px 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="married_greener_grass_750" border="0" alt="married_greener_grass_750" align="left" width="240" height="186" src="/Images/blog_viewfusion_local/Archive/SharePoint2010DevExperience/married_greener_grass_750_thumb_0643A725.jpg" /&gt;&lt;/a&gt; So there is always a “but” to everything and I have one for this seemingly SharePoint 2010 Fan boy post as well. The product is currently a beta product. i don’t want to completely judge it based on how well current aspects of the tool work but rather on how it would appear Microsoft is intending for them to work. But be that as it may I have a couple reservations with the current beta implementation and I’m hoping to see some improvements before release: &lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;strong&gt;Import Solution Packages&lt;/strong&gt; – The current UI for solution package import can be overwhelming. Visual Studio is able to pull read the artifacts but the presentation of those artifacts can be quite an enormous list even for the case of blank team sites. Additionally the import process rightfully can identify dependencies, a good thing, but does not make any determination to the source of those dependencies. You can very easily, and inadvertently, attempt to duplicate out of the box definitions for items such as site columns and content types. In short the UI is a bit over simplified for displaying a more complex structure and I think the tool needs to be a little more intelligent about how it identifies dependencies. Additionally I would like an out of the box method for importing artifact outside the need for a new Import Solution Package project, some more granularity. &lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Import Workflow&lt;/strong&gt; – I recently did a presentation on SharePoint 2010 Workflow enhancements at SharePoint Saturday KC. One of the things I warn against is importing workflows developed through SPD into Visual Studio. The concept is a great one, the implementation not so much, even the most simple of workflows can turn into a hundreds of actions on the workflow design surface with not so descriptive names as R1, R2. I would argue you would spend more time cleaning up the mess that it would negate the use of the tool. You may be more inclined to expert it into Visio and use the Visio diagram to rebuild the workflow. &lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Server Explorer Improvements&lt;/strong&gt; – Right now the SharePoint server explorer is completely read-only and with the ability to import artifacts limited to new SharePoint projects it would be great if server explorer would also allow you to export artifacts at a granular level. This would arguably be more powerful then the solution package import itself. I don’t see this happening but maybe it will become a project of mine in the future – hell the SharePoint integration with Visual studio is VERY extensible. &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This post hasn’t even touched on some of the SharePoint 2010 server goodness but all in all though the developer experience in SharePoint 2010 is full of solid improvements and developers should find a much more pleasant experience and you just may not become an old dog before your time!&lt;/p&gt;&lt;hr /&gt;
Technorati tags: &lt;a rel="tag" href="http://technorati.com/tags/SharePoint+2010"&gt;SharePoint 2010&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Visual+Studio 2010"&gt; Visual Studio 2010&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Developer"&gt; Developer&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://www.sharepointbrainfreeze.com/aggbug/4.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/SharepointBrainFreeze/~4/ASParVS3C3g" height="1" width="1"/&gt;</description>
            <dc:creator>Joshua Carlisle</dc:creator>
            <guid isPermaLink="false">http://www.sharepointbrainfreeze.com/archive/2010/01/05/TheSharePoint2010DeveloperExperience.aspx</guid>
            <pubDate>Tue, 05 Jan 2010 16:18:00 GMT</pubDate>
            <comments>http://www.sharepointbrainfreeze.com/archive/2010/01/05/TheSharePoint2010DeveloperExperience.aspx#feedback</comments>
            <slash:comments>14</slash:comments>
            <wfw:commentRss>http://www.sharepointbrainfreeze.com/comments/commentRss/4.aspx</wfw:commentRss>
            <trackback:ping>http://www.sharepointbrainfreeze.com/services/trackbacks/4.aspx</trackback:ping>
        <feedburner:origLink>http://www.sharepointbrainfreeze.com/archive/2010/01/05/TheSharePoint2010DeveloperExperience.aspx</feedburner:origLink></item>
        <item>
            <title>SharePoint Saturday Raleigh and Speaking at Sandhills SharePoint User Group November 19th.</title>
            <category>Triangle SharePoint UserGroup</category>
            <category>SharePoint Community</category>
            <link>http://feedproxy.google.com/~r/SharepointBrainFreeze/~3/aSsUpQAu5sU/SharePointSaturdayRaleighSandhillsUG.aspx</link>
            <description>&lt;div class="ExternalClassCA3E0A24F8094DBDA5ED7B5DBEC75795"&gt;
&lt;p&gt;I wanted to thank everyone who spoke, volunteered, and attended the first SharePoint Saturday Raleigh event. Talking to folks after the event and listening to some feedback from twitter everything seems pretty positive so far which I’m glad to hear.  We’re already looking forward to another event next year and we’ll work hard to improve on our success. Look for future announcements through the &lt;a href="http://www.trispug.com/"&gt;Triangle SharePoint User Group&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I really apologize to the folks at my session, projector issues cut my time in half and then VM slowness and beta stability problems killed the rest of the session. The really embarrassing part came afterwards when I noticed in my rush to move rooms after the projector failed I never plugged in my laptop. No Power = Power Saving = CPU Suckage = VM Useless. Hopefully if you attended my session you got some useful information from our discussion.  As promised I’ve already started to work on my webcast with the full demo\slide deck so I should have that available for download\streaming this week for folks.&lt;/p&gt;
&lt;p&gt;On another note i will be presenting this same session (hopefully with better luck!) to the &lt;a href="http://www.sharepointgroups.org/sites/SSPUG/default.aspx"&gt;Sandhills SharePoint User Group&lt;/a&gt; in Fayetteville on Thursday November 19th. So if you missed my presentation or want to give it another go you may want to check out that meeting, its a smaller group so there will be lots of opportunity for questions and discussion.&lt;/p&gt;
&lt;p&gt;Here are some pictures for the speaker social, as you can see everyone was having a pretty good time.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="/Lists/Posts/Attachments/57/20091106026_4AB8C77E.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="2009-11-06 026" border="0" alt="2009-11-06 026" width="748" height="501" src="/Images/blog_viewfusion_local/Archive/SPSAT_SANDHILLS/20091106026_thumb_4AB8C77E.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="/Lists/Posts/Attachments/57/20091106001_4AB8C77E.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="2009-11-06 001" border="0" alt="2009-11-06 001" width="244" height="164" src="/Images/blog_viewfusion_local/Archive/SPSAT_SANDHILLS/20091106001_thumb_4AB8C77E.jpg" /&gt;&lt;/a&gt;  &lt;a href="/Lists/Posts/Attachments/57/20091106003_4AB8C77E.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="2009-11-06 003" border="0" alt="2009-11-06 003" width="244" height="164" src="/Images/blog_viewfusion_local/Archive/SPSAT_SANDHILLS/20091106003_thumb_4AB8C77E.jpg" /&gt;&lt;/a&gt;  &lt;a href="/Lists/Posts/Attachments/57/20091106006_4AB8C77E.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="2009-11-06 006" border="0" alt="2009-11-06 006" width="244" height="164" src="/Images/blog_viewfusion_local/Archive/SPSAT_SANDHILLS/20091106006_thumb_4AB8C77E.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="/Lists/Posts/Attachments/57/20091106007_4AB8C77E.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="2009-11-06 007" border="0" alt="2009-11-06 007" width="244" height="164" src="/Images/blog_viewfusion_local/Archive/SPSAT_SANDHILLS/20091106007_thumb_4AB8C77E.jpg" /&gt;&lt;/a&gt; &lt;a href="/Lists/Posts/Attachments/57/20091106019_4AB8C77E.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="2009-11-06 019" border="0" alt="2009-11-06 019" width="244" height="164" src="/Images/blog_viewfusion_local/Archive/SPSAT_SANDHILLS/20091106019_thumb_4AB8C77E.jpg" /&gt;&lt;/a&gt; &lt;a href="/Lists/Posts/Attachments/57/20091106022_4AB8C77E.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="2009-11-06 022" border="0" alt="2009-11-06 022" width="244" height="164" src="/Images/blog_viewfusion_local/Archive/SPSAT_SANDHILLS/20091106022_thumb_4AB8C77E.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt; &lt;a href="/Lists/Posts/Attachments/57/20091107002_4AB8C77E.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="2009-11-07 002" border="0" alt="2009-11-07 002" width="244" height="164" src="/Images/blog_viewfusion_local/Archive/SPSAT_SANDHILLS/20091107002_thumb_4AB8C77E.jpg" /&gt;&lt;/a&gt; &lt;a href="/Lists/Posts/Attachments/57/20091107008_4AB8C77E.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="2009-11-07 008" border="0" alt="2009-11-07 008" width="244" height="164" src="/Images/blog_viewfusion_local/Archive/SPSAT_SANDHILLS/20091107008_thumb_4AB8C77E.jpg" /&gt;&lt;/a&gt; &lt;a href="/Lists/Posts/Attachments/57/20091107010_4AB8C77E.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="2009-11-07 010" border="0" alt="2009-11-07 010" width="244" height="164" src="/Images/blog_viewfusion_local/Archive/SPSAT_SANDHILLS/20091107010_thumb_4AB8C77E.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;a href="/Lists/Posts/Attachments/57/20091107013_4AB8C77E.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="2009-11-07 013" border="0" alt="2009-11-07 013" width="244" height="164" src="/Images/blog_viewfusion_local/Archive/SPSAT_SANDHILLS/20091107013_thumb_4AB8C77E.jpg" /&gt;&lt;/a&gt; &lt;a href="/Lists/Posts/Attachments/57/20091107017_4AB8C77E.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="2009-11-07 017" border="0" alt="2009-11-07 017" width="244" height="164" src="/Images/blog_viewfusion_local/Archive/SPSAT_SANDHILLS/20091107017_thumb_4AB8C77E.jpg" /&gt;&lt;/a&gt; &lt;a href="/Lists/Posts/Attachments/57/20091107006_4AB8C77E.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="2009-11-07 006" border="0" alt="2009-11-07 006" width="244" height="164" src="/Images/blog_viewfusion_local/Archive/SPSAT_SANDHILLS/20091107006_thumb_4AB8C77E.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="/Lists/Posts/Attachments/57/20091107005_4AB8C77E.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="2009-11-07 005" border="0" alt="2009-11-07 005" width="244" height="164" src="/Images/blog_viewfusion_local/Archive/SPSAT_SANDHILLS/20091107005_thumb_78A61A36.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;img src="http://www.sharepointbrainfreeze.com/aggbug/5.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/SharepointBrainFreeze/~4/aSsUpQAu5sU" height="1" width="1"/&gt;</description>
            <dc:creator>Blog Author</dc:creator>
            <guid isPermaLink="false">http://www.sharepointbrainfreeze.com/archive/2009/11/10/SharePointSaturdayRaleighSandhillsUG.aspx</guid>
            <pubDate>Tue, 10 Nov 2009 12:09:00 GMT</pubDate>
            <comments>http://www.sharepointbrainfreeze.com/archive/2009/11/10/SharePointSaturdayRaleighSandhillsUG.aspx#feedback</comments>
            <wfw:commentRss>http://www.sharepointbrainfreeze.com/comments/commentRss/5.aspx</wfw:commentRss>
            <trackback:ping>http://www.sharepointbrainfreeze.com/services/trackbacks/5.aspx</trackback:ping>
        <feedburner:origLink>http://www.sharepointbrainfreeze.com/archive/2009/11/10/SharePointSaturdayRaleighSandhillsUG.aspx</feedburner:origLink></item>
        <item>
            <title>SharePoint Saturday Goodness</title>
            <category>SharePoint</category>
            <category>SharePoint Community</category>
            <category>SharePoint Saturday</category>
            <category>SharePoint 2010</category>
            <link>http://feedproxy.google.com/~r/SharepointBrainFreeze/~3/7kX9GdT3V_Y/SharePointSaturdayGoodness.aspx</link>
            <description>&lt;div class="ExternalClass6D836E21272547F0921A8B42F5C49649"&gt;
&lt;p&gt;First off if your in the Raleigh area and you haven’t registered for &lt;a target="_blank" href="http://www.sharepointsaturday.org/raleigh/default.aspx"&gt;SharePoint Saturday Raleigh&lt;/a&gt;, What are you waiting for! Go &lt;a target="_blank" href="https://www.clicktoattend.com/invitation.aspx?code=141969"&gt;register&lt;/a&gt;, I promise it will be a great time!&lt;/p&gt;
&lt;p&gt;I’m particular excited about the Raleigh event not only because its the first home town SharePoint Saturday for me and the great new SharePoint 2010 content but also because its going to kick off a couple months of speaking at other SharePoint Saturday events. The new addition to my family, Ava now 5 months old, has kept me pretty busy the last few months but I’m looking forward to getting back out in the community again. And what a great time to! I’m looking forward to sharing some of the great new developer experience available in SharePoint 2010. If anyone has ever heard me rant about the state of SharePoint 2007 developer tools (whether you agree or disagreed with me lol) then you can understand just how excited I am about the developer experience in SharePoint 2010 (and Visual Studio 2010). &lt;/p&gt;
&lt;p&gt;On the developer experience I plan to split my sessions across a couple of developer topics:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SharePoint 2010 Developer Goodness (SharePoint Saturday Raleigh, Virginia Beach, Richmond)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Although few argue the business success of SharePoint you’ll find far fewer developers singing the praises of SharePoint. For developers the lack-luster integration with Visual Studio was often a pain point. For developers and designers alike SharePoint Designer, with all of its portability and applications lifecycle consequences were also a source of frustration. For all the heavy development environment requirements could often be a show stopper.  With all that and more in mind SharePoint 2010 represents a significant step forward fore SharePoint as a development platform. SharePoint is now a first class citizen in Visual Studio 2010. SharePoint Designer can now fully participate in application development lifecycle. Windows Vista and Windows 7 are now viable development platforms for SharePoint.  In this session we will be introducing the new features of Visual Studio 2010’s integration with SharePoint. We will be providing on overview of SharePoint Designer 2010 new ability to produce WSP packages. Lastly we’ll be touching on some of the new built in tools for developers including the Developer Dashboard.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SharePoint 2010 Developer Workflows – Joint Sessions with Michael Lotter (SharePoint Saturday Kansas City)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;SharePoint 2007 introduced the SharePoint platform to Windows Workflow. Along with it came some first generation design tools and a very disconnected experience between developers, designers, and business and between the toolset they work with including Visual Studio, SharePoint Designer, and Visio. Did you ever wish that the Visual Studio experience wasn’t as painful, or that you could make your SharePoint Designer workflows more portable, or that you could take your workflow designs developed by your business and port them into SharePoint? Well the wait is over with SharePoint 2010. In this joint back to back session we will be showing off the new features of SharePoint 2010 that allows you to develop workflows using Visio, import them into SharePoint Designer, make modifications in SharePoint Designer, extract to Visio for further modifications and finally extracting into Visual Studio for some hardcore workflow modifications.&lt;/p&gt;
&lt;p&gt;November 7, 2009&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.sharepointsaturday.org/raleigh"&gt;&lt;img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="SPS_Ral" border="0" alt="SPS_Ral" width="644" height="56" src="/Images/blog_viewfusion_local/Archive/SharepointSaturdayGoodness/SPS_Ral_3_6BB6950A.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;November 21, 2009&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.sharepointsaturday.org/richmond"&gt;&lt;img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="SPS_Rich" border="0" alt="SPS_Rich" width="244" height="87" src="/Images/blog_viewfusion_local/Archive/SharepointSaturdayGoodness/SPS_Rich_3_6BB6950A.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;December 12th, 2009&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.sharepointsaturday.org/kc"&gt;&lt;img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="SPS_KC" border="0" alt="SPS_KC" width="230" height="89" src="/Images/blog_viewfusion_local/Archive/SharepointSaturdayGoodness/SPS_KC_3_19A3E7C3.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;January 10th, 2010&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.sharepointsaturday.org/virginiabeach/default.aspx"&gt;&lt;img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="SPS_VB" border="0" alt="SPS_VB" width="244" height="93" src="/Images/blog_viewfusion_local/Archive/SharepointSaturdayGoodness/SPS_VB_3_19A3E7C3.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Look forward to seeing everyone there!&lt;/p&gt;&lt;hr /&gt;
Technorati tags: &lt;a rel="tag" href="http://technorati.com/tags/SharePoint+Saturday"&gt;SharePoint Saturday&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://www.sharepointbrainfreeze.com/aggbug/6.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/SharepointBrainFreeze/~4/7kX9GdT3V_Y" height="1" width="1"/&gt;</description>
            <dc:creator>Joshua Carlisle</dc:creator>
            <guid isPermaLink="false">http://www.sharepointbrainfreeze.com/archive/2009/10/27/SharePointSaturdayGoodness.aspx</guid>
            <pubDate>Tue, 27 Oct 2009 23:46:37 GMT</pubDate>
            <comments>http://www.sharepointbrainfreeze.com/archive/2009/10/27/SharePointSaturdayGoodness.aspx#feedback</comments>
            <wfw:commentRss>http://www.sharepointbrainfreeze.com/comments/commentRss/6.aspx</wfw:commentRss>
            <trackback:ping>http://www.sharepointbrainfreeze.com/services/trackbacks/6.aspx</trackback:ping>
        <feedburner:origLink>http://www.sharepointbrainfreeze.com/archive/2009/10/27/SharePointSaturdayGoodness.aspx</feedburner:origLink></item>
        <item>
            <title>So You Want To Become A SharePoint Professional?</title>
            <link>http://feedproxy.google.com/~r/SharepointBrainFreeze/~3/qm4sObYFByU/So You Want To Become A SharePoint Professional</link>
            <description>&lt;div class=ExternalClassC506B0713D994EBFA1DB0814F331E2C0&gt;&lt;p&gt;Since I started speaking to groups on the subject of SharePoint at the early days of SharePoint 2007, no matter the topic of my discussion at the time, I almost inevitably got the question from the audience, “&lt;em&gt;I don’t know anything about SharePoint but i want to get into SharePoint, where should I get started?”.&lt;/em&gt;  It’s a pretty common question out there and you’re likely reading this post because you have the same question, I’ve pointed this blog post to you,  or you’ve already figured out a way to answer that question and you’re curious how I suggest to approach the task.&lt;/p&gt;  &lt;p&gt;The answer isn’t the easiest. You see SharePoint is a HUGE BEAST of an application and it can be overwhelming trying to figure out where to get started. Early on I approached this from the perspective of a web developer, specifically ASP.NET developers, in my &lt;em&gt;SharePoint for ASP.NET Developers&lt;/em&gt; presentations last year. For me it wasn’t the most exciting or sexy of presentations to give but to date it’s still been one of my most popular. Probably for one of the most obvious reasons -  there are a lot more asp.net developers then there are SharePoint developers and SharePoint is one of Microsoft’s best selling products in company history. You put the two together and you have folks wanting (or being told to) learn SharePoint.&lt;/p&gt;  &lt;p&gt;In my presentation last week at the Hampton Roads SharePoint User Group I was once again presented with the same question. I typically have quite a few stock answers and it inevitably comes down to requests for specific resources. Instead of trying to keep my suggestions and resource links on every presentation slide deck i decided to bite the bullet and get a blog post up to reference. &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;First off start with the basics:      &lt;br&gt;      &lt;ul&gt;       &lt;li&gt;&lt;strong&gt;Start with Windows SharePoint Services.&lt;/strong&gt; WSS provides the foundation for it's big brother Microsoft Office SharePoint Server (MOSS). Understanding WSS will prepare you for the added complexity\functionary when\if it becomes time to move up to MOSS and will give you an excellent foundation.           &lt;br&gt;&lt;/li&gt;        &lt;li&gt;&lt;strong&gt;Learn what SharePoint can do out of the box&lt;/strong&gt;. As a developer its very easy to start thinking about custom solutions when a customer presents you with a challenge. One of the biggest value in a truly good SharePoint professional is knowing the capabilities of the application and helping your customer avoid the complexities and cost of custom development on top of an already expensive investment.  In areas where SharePoint doesn’t exactly shine, such as some of its Web 2.0 features, it may mean making suggestions for alternative ways to achieve their goals.  For example the out of the box Wiki is fairly primitive to current standards (heck it was designed and coded pushing 5 years ago) but they may be able to save 100% of the custom costs by accepting 80% of the functionality they need. You’ll find as you gain experience with SharePoint its all about compromises and working with the tool not against it.           &lt;br&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Make use of free online resources:      &lt;br&gt;      &lt;ul&gt;       &lt;li&gt;&lt;a target="_blank"&gt;&lt;strong&gt;Official SharePoint Forums&lt;/strong&gt;&lt;/a&gt; – The official SharePoint forums are a great place to get started and ask questions. Not only are there Microsoft technical specialists who monitor and answer questions there is a very healthy community that answer questions. Its a great place to bounce ideas off of, ask about the basics, or get some help with something that is stumping you.           &lt;br&gt;&lt;/li&gt;        &lt;li&gt; &lt;a href="http://msdn.microsoft.com/en-us/sharepoint/default.aspx" target="_blank"&gt;&lt;strong&gt;SharePoint MSDN Site&lt;/strong&gt;&lt;/a&gt; – This is a great aggregate of online resources, links, and articles, and &lt;a href="http://msdn.microsoft.com/en-us/sharepoint/ee663870.aspx" target="_blank"&gt;videos&lt;/a&gt;. In the early days it’s content was fairly light but they’ve really improved it in the last year. Just this morning i noticed a great article on &lt;a href="http://msdn.microsoft.com/en-us/library/bb530302.aspx" target="_blank"&gt;different tools and techniques for developing in SharePoint&lt;/a&gt;.           &lt;br&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=67f93dcb-ada8-4db5-a47b-df17e14b2c74&amp;amp;displaylang=en" target="_blank"&gt;&lt;strong&gt;Download a Pre-Configured SharePoint Virtual Machine&lt;/strong&gt;&lt;/a&gt; – Microsoft created a time bombed virtual machine that comes preconfigured with MOSS, Search, Reporting,etc. Its a great way to play around without having to worth through the overhead of installing and configuring a new environment. If you mess up the environment all you have to do is restart and you’re back up and running. Just make sure you get your playing done in 30 days, after that you’re on your own :( .   &lt;br&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="http://www.endusersharepoint.com" target="_blank"&gt;&lt;strong&gt;End User SharePoint&lt;/strong&gt;&lt;/a&gt; – End User SharePoint is new in the last year to the SharePoint community. At last year’s SharePoint Saturday Virginia Beach I remember Mark Miller talking up his new community site and since then its has really grown, lots of great articles from community contributors from around the country.           &lt;br&gt;&lt;/li&gt;        &lt;li&gt;&lt;strong&gt;SharePoint Blogs&lt;/strong&gt; – The SharePoint blogging community is one of the most active technical blogging communities I’ve ever seen. There are too many blog posts to mention but I’d start with the &lt;a href="http://feeds.feedburner.com/sharepointmsteamblogs" target="_blank"&gt;MS SharePoint Team&lt;/a&gt; blogs and checkout some MVP blogs. I guarantee within a few days you’ll have a couple dozen RSS feeds added to your favorite reader.           &lt;br&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Buy some books. With all the great online resources its easy to overlook the tried and true reference guides, before heading out and dropping the $$ on some books though make sure you checkout the free online resources.      &lt;br&gt;      &lt;br&gt;Some of my favorites include:       &lt;ul&gt;       &lt;li&gt;&lt;a href="http://www.amazon.com/Microsoft-Windows-SharePoint-Services-Developer/dp/0735623201/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1255963075&amp;amp;sr=8-1" target="_blank"&gt;&lt;strong&gt;Inside Microsoft Windows SharePoint Services 3.0 (Pro Developer)&lt;/strong&gt;&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;&lt;strong&gt;&lt;a href="http://www.amazon.com/dp/0470224754?tag=andrewconnell-20&amp;amp;camp=14573&amp;amp;creative=327641&amp;amp;linkCode=as1&amp;amp;creativeASIN=0470224754&amp;amp;adid=02NBN5VG6FZTPA9R99CB&amp;amp;" target="_blank"&gt;Profession SharePoint WCM Development&lt;/a&gt;&lt;/strong&gt;  &lt;/li&gt;        &lt;li&gt;&lt;strong&gt;&lt;a href="http://www.lulu.com/content/2071084" target="_blank"&gt;SharePoint Sheppard's Guide for End Users&lt;/a&gt;&lt;/strong&gt; &lt;/li&gt;        &lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/0735622825/" target="_blank"&gt;&lt;strong&gt;Microsoft Office Administrators Companion&lt;/strong&gt;&lt;/a&gt;           &lt;br&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Attend SharePoint User Groups and Community Events:      &lt;br&gt;      &lt;br&gt;      &lt;ul&gt;       &lt;li&gt;&lt;strong&gt;SharePoint User Groups&lt;/strong&gt; – Most folks are within driving distance of a SharePoint User Group or Office Geeks user group.  The &lt;a href="http://www.sharepointpros.org/Pages/Default.aspx" target="_blank"&gt;ISPA&lt;/a&gt; site has a pretty good listing of existing user groups out there so check it out to find one in your area.  SPUG’s are one of the best resources that nobody knows about. You get presentations from folks in the industry, not travelling presenters, the insight that these folks have can truly be remarkable. It’s also an invaluable resource for networking with other SharePoint professionals. If you’re in the Raleigh area check out the &lt;a href="http://www.trispug.com" target="_blank"&gt;Triangle SharePoint User Group&lt;/a&gt;, we meet the 1st Tuesday of each month.           &lt;br&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="http://www.sharepointsaturday.org" target="_blank"&gt;&lt;strong&gt;SharePoint Saturday&lt;/strong&gt;&lt;/a&gt; – SharePoint Saturday is a free, educational, informative &amp;amp; lively day filled with sessions from respected SharePoint professionals &amp;amp; MVPs, covering a wide variety of SharePoint-orientated topics. Most SharePoint Saturday events have developer, administration, end user, and power user tracks just to name a few so there is typically something for everyone.  SharePoint Saturday’s are spreading like wildfire and you’re seeing them popup all over the country (and world!).           &lt;br&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Setting up your own Virtual Machines – Once you get to a certain point you’re going to want to start playing around with SharePoint on your own without having to talk your IT folks into setting up an environment for you. Because SharePoint currently has an Server OS requirement for installation (Windows Server 2003, Windows Server 2008) the best way to go about it is to setup a local virtual machine using a tool such as VMWare Workstation, Virtual PC, or Virtual Box. Alternatively you can install Windows Server 2003\2008 on a physical machine if you have one sitting around. The final alternative is to use an unsupported tool from Bamboo to allow SharePoint to install on a workstation. I’ve never used this tool and its completely unsupported by MS but it’s out there to try if you can’t swing the hardware requirements of a virtual machine.      &lt;br&gt;      &lt;br&gt;On the hardware topic I do have a couple suggestions if you plan to go the virtual machine route:      &lt;br&gt;  &lt;ol&gt;       &lt;li&gt;Have your Virtual Machines on a second drive dedicated drive to improve performance. This may mean a secondary internal drive (some laptops 17’ or greater like my HP  have two drives) or pickup an external usb drive          &lt;br&gt;&lt;/li&gt;        &lt;li&gt;The faster the drive the better. I usually don’t get less then 7200RPM for my VM disks. Even better if you can afford it go for a new SSD drive.          &lt;br&gt;&lt;/li&gt;        &lt;li&gt;4GB or grater RAM. The virtual machine uses the same recommended memory as the base OS so you want to try to give your VM at least 2GB of RAM if you can manage it. Anything below that and you’ll start to have performance issues.  8GB RAM, even on laptops, have come down in prices so if you can swing it go with 8GB. &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;br&gt;  &lt;br&gt;This is by no means an definitive list but hopefully get you on your way to becoming a SharePoint Pro!. Have something you think should be on the list? Drop me a line in my comments.  &lt;p&gt;&lt;em&gt;SharePoint 2010: One caveat - things are going to start changing this week with SharePoint 2010 being formally introduced at the SharePoint conference, and more importantly for me, the lifting of the NDA that keeps me from talking about some of the new content and how it impacts the ramp up time, especially for developers. I’ll keep this updated with some of the latest content as it becomes available.&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.sharepointbrainfreeze.com/aggbug/7.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/SharepointBrainFreeze/~4/qm4sObYFByU" height="1" width="1"/&gt;</description>
            <guid isPermaLink="false">http://www.sharepointbrainfreeze.com/archive/2009/10/19/So You Want To Become A SharePoint Professional?.aspx</guid>
            <pubDate>Mon, 19 Oct 2009 12:30:08 GMT</pubDate>
            <comments>http://www.sharepointbrainfreeze.com/archive/2009/10/19/So You Want To Become A SharePoint Professional?.aspx#feedback</comments>
            <wfw:commentRss>http://www.sharepointbrainfreeze.com/comments/commentRss/7.aspx</wfw:commentRss>
            <trackback:ping>http://www.sharepointbrainfreeze.com/services/trackbacks/7.aspx</trackback:ping>
        <feedburner:origLink>http://www.sharepointbrainfreeze.com/archive/2009/10/19/So You Want To Become A SharePoint Professional?.aspx</feedburner:origLink></item>
        <item>
            <title>Speaking at Hampton Roads SPUG &amp; DOD SPUG (Virginia) Tomorrow 10/15/2009</title>
            <link>http://feedproxy.google.com/~r/SharepointBrainFreeze/~3/G4P4U-30Iz8/2009.aspx</link>
            <description>&lt;div class=ExternalClass424E2758414440339801A866C13D9323&gt;&lt;p&gt; &lt;/p&gt;  &lt;p&gt;Tomorrow I will be heading up to Virginia to speak at the &lt;a href="http://www.hrssug.org/default.aspx" target="_blank"&gt;Hampton Roads SQL\SharePoint User&lt;/a&gt; Group and the Department of Defense SharePoint User Group for a day of SharePoint Build environment topics. The Hampton Roads group meets at the &lt;a href="http://www.vbatc.com"&gt;Virginia Beach City Public Schools at their Advanced Technology Center, Room 131&lt;/a&gt;. More details on the group and the location can be found at their website &lt;a href="http://www.hrssug.org/default.aspx"&gt;http://www.hrssug.org/default.aspx&lt;/a&gt;. If you’re in the military\contractor the DOD presentation will also be available on a web conference via the DCO, if you need connection information please drop me a line in my comments and I can put you in touch with the right folks.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;I was originally planning to speak on some of the new integration between Visual Studio 2010 and SharePoint 2010. Although SP2010 is still under NDA (so I can’t speak much on the subject - at least until the SharePoint conference next week) I thought there was enough juicy tidbits in the content already announced by Microsoft (fair game to talk about) that I could get away with a high level topic. There have actually been a couple articles and videos released by Microsoft in the last few months, especially most recently on &lt;a href="http://msdn.microsoft.com/en-us/magazine/ee309510.aspx" target="_blank"&gt;Visual Studio 2010 Tools for SharePoint&lt;/a&gt; so I felt it would be safe to present on this content in a limited fashion. As I was prepping for the talk I felt I was skirting the boundaries of the NDA a little too closely so I chose to err on the side of caution and hold off on that topic. So if you’re interested in seeing that discussion you’ll have to come to my session at the &lt;a href="http://www.sharepointsaturday.org/raleigh/default.aspx" target="_blank"&gt;Raleigh SharePoint Saturday&lt;/a&gt; event. &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;I will however be presenting on a topic that applies to both the current and next version of SharePoint which is setting up a SharePoint Build Environment.  If you’ve already seen this presentation in one of my other road trips this year I have a different spin on this presentation that will be new for tomorrow.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Easing Your Deployment Burdens With A SharePoint Build Environment&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Every project can benefit from the practice of implementing a build server. From daily builds to continuous integration, the benefits have never been in dispute, but many have felt that SharePoint has too many complexities to be supported in a build environment. In this updated session we’ll be covering the use and creation of custom msbuild tasks to automate many aspects of SharePoint deployment to make the process of not only compiling but solution package creation, deployment, and feature\site creation from within the build process straight forward.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Thanks again to Susan Lennon for the invitation to speak with these groups and I look forward to seeing everyone!&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.sharepointbrainfreeze.com/aggbug/8.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/SharepointBrainFreeze/~4/G4P4U-30Iz8" height="1" width="1"/&gt;</description>
            <guid isPermaLink="false">http://www.sharepointbrainfreeze.com/archive/2009/10/14/Speaking at Hampton Roads SPUG &amp; DOD SPUG (Virginia) Tomorrow 10/15/2009.aspx</guid>
            <pubDate>Wed, 14 Oct 2009 13:35:51 GMT</pubDate>
            <comments>http://www.sharepointbrainfreeze.com/archive/2009/10/14/Speaking at Hampton Roads SPUG &amp; DOD SPUG (Virginia) Tomorrow 10/15/2009.aspx#feedback</comments>
            <wfw:commentRss>http://www.sharepointbrainfreeze.com/comments/commentRss/8.aspx</wfw:commentRss>
            <trackback:ping>http://www.sharepointbrainfreeze.com/services/trackbacks/8.aspx</trackback:ping>
        <feedburner:origLink>http://www.sharepointbrainfreeze.com/archive/2009/10/14/Speaking at Hampton Roads SPUG &amp; DOD SPUG (Virginia) Tomorrow 10/15/2009.aspx</feedburner:origLink></item>
        <item>
            <title>Developing SharePoint Workflows for WSS – Don’t Forget To Remove Your MOSS Dependencies</title>
            <category>SharePoint</category>
            <link>http://feedproxy.google.com/~r/SharepointBrainFreeze/~3/_4j-VKHuu24/DevelopingSharePointWorkflowsforWSSDontForgetToRemoveYourMOSSDependencies.aspx</link>
            <description>&lt;div class="ExternalClassD4C6F42F187F46DE8ADBE678B300967A"&gt;
&lt;p&gt;I was working on a short workflow project for a client a couple weeks ago that was targeting WSS. Just a simple workflow to provide some enhanced blog posting features -  nothing crazy. I typically spin up a new virtual machine for each project from my base developer virtual machine so I have a clean slate but I was being lazy and this was a quick module so I decided to just ride on the virtual machine that I already had spun up for another project. However this virtual machine had MOSS installed but I was already aware of some of the caveats with developing workflows targeting WSS. &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;I don’t use Microsoft’s SharePoint\Workflow project templates because they &lt;a target="_blank" href="http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=407711"&gt;don’t support 32bit&lt;/a&gt; (boooo!) so I’m not sure if this is an issue with that project type but there are a couple things to consider especially if you're using &lt;a target="_blank" href="http://www.codeplex.com/wspbuilder"&gt;wspbuilder&lt;/a&gt;’s workflow template like me. This is fairly common knowledge with a few searches so I won’t get into great detail but you will need to make some adjustments to the out of the box workflow project template to allow it to successfully deploy\run in a WSS environment as it contains some MOSS dependencies by default:&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;1) Remove any reference to moss\office assemblies in the project: &lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="/Lists/Posts/Attachments/53/image_2_02D995B0.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="image" border="0" alt="image" width="644" height="207" src="/Images/blog_viewfusion_local/Archive/SharePointWorkflowsMossDependencies/image_thumb_02D995B0.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;2) In your generated elements file remove the references to the forms (AssociationUrl, InstantiationUrl,ModificationUrl, StatusUrl). These are references to pages only available in MOSS.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="/Lists/Posts/Attachments/53/image_4_02D995B0.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="image" border="0" alt="image" width="644" height="219" src="/Images/blog_viewfusion_local/Archive/SharePointWorkflowsMossDependencies/image_thumb_1_02D995B0.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;You may be asking why these pages become an issue. In short these are Infopath Forms Server forms. Unfortunately WSS does not have access to forms server so these are unavailable. &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;em&gt;On a side note I was chatting with my co-worker Michael Lotter the other day who did confirm from a MS resource that you can use InfoPath Forms Server forms in workflows for MOSS Standard but only within the context of workflow forms, anything beyond that and you’ll need MOSS enterprise.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;3) Remove the default TaskListContentTypeId (unless you are implementing a custom one).&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="/Lists/Posts/Attachments/53/image_6_02D995B0.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="image" border="0" alt="image" width="644" height="146" src="/Images/blog_viewfusion_local/Archive/SharePointWorkflowsMossDependencies/image_thumb_2_02D995B0.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;em&gt;Without these steps you’ll run into problems installing the workflow&lt;/em&gt;. Now in my haste I neglected to remove the &lt;u&gt;TaskListContentTypeId&lt;/u&gt;. Unfortunately for me the workflow feature successfully activated, I was able to add a workflow reference to my targeted list, but from there things got strange. It would have been easier if I just got an ugly incomprehensible error but SharePoint wanted to keep me on my toes this day. &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;So if you’re like me and you forget to remove the TaskListConetntTypeId you may be left scratching your head for a while with the strange behavior. The workflow feature will install, activate, and you can associate the workflow with a list but you’ll notice right away that executing the workflow does nothing,the workflow status column shows no status, and no workflow history exists. You will not receive any exceptions, no event or ULS logs, things will simply not work. As with any development error the worst kinds are the ones that don’t throw any exceptions.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="/Lists/Posts/Attachments/53/image_8_02D995B0.png"&gt;&lt;img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="image" border="0" alt="image" width="644" height="152" src="/Images/blog_viewfusion_local/Archive/SharePointWorkflowsMossDependencies/image_thumb_3_30C6E868.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;So moral of the story, if you’re targeting WSS and developing in MOSS make sure catch all your moss dependencies that may be injected in by your project template of choice or you may get a few surprises when you deploy to your staging\production environment. &lt;/p&gt;
&lt;/div&gt;&lt;img src="http://www.sharepointbrainfreeze.com/aggbug/9.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/SharepointBrainFreeze/~4/_4j-VKHuu24" height="1" width="1"/&gt;</description>
            <dc:creator>Blog Author</dc:creator>
            <guid isPermaLink="false">http://www.sharepointbrainfreeze.com/archive/2009/10/08/DevelopingSharePointWorkflowsforWSSDontForgetToRemoveYourMOSSDependencies.aspx</guid>
            <pubDate>Thu, 08 Oct 2009 13:26:58 GMT</pubDate>
            <comments>http://www.sharepointbrainfreeze.com/archive/2009/10/08/DevelopingSharePointWorkflowsforWSSDontForgetToRemoveYourMOSSDependencies.aspx#feedback</comments>
            <wfw:commentRss>http://www.sharepointbrainfreeze.com/comments/commentRss/9.aspx</wfw:commentRss>
            <trackback:ping>http://www.sharepointbrainfreeze.com/services/trackbacks/9.aspx</trackback:ping>
        <feedburner:origLink>http://www.sharepointbrainfreeze.com/archive/2009/10/08/DevelopingSharePointWorkflowsforWSSDontForgetToRemoveYourMOSSDependencies.aspx</feedburner:origLink></item>
        <item>
            <title>SharePoint Saturday Charlotte Session Follow-up</title>
            <link>http://feedproxy.google.com/~r/SharepointBrainFreeze/~3/eTkbA5YR3f8/SharePointSaturdayCharlotteSessionFollow-up.aspx</link>
            <description>&lt;div class="ExternalClassC69AB878A86040448FE33C05E0EFC8AE"&gt;
&lt;p&gt;Well SharePoint Saturday Charlotte is now behind us. I had a really great time. Thanks again to Dan Lewis and company for putting together a great event. It was great to catch up with everyone and especially meeting some new folks like Laura Rogers, Heather Waterman, and Shadeed Eleazer. I’m hoping to make it to some more SharePoint Saturday’s soon.&lt;/p&gt;
&lt;h5&gt; &lt;/h5&gt;
&lt;p&gt;A couple follow-ups on my session on using a SharePoint Build Environment. In case you missed the SharePoint Saturday Charlotte site you can also download my &lt;a target="_blank" href="http://www.sharepointsaturday.org/charlotte/Lists/MeetingResources/Creating a SharePoint Build Server.pptx"&gt;presentations&lt;/a&gt; and the demo &lt;a target="_blank" href="http://www.sharepointsaturday.org/charlotte/Lists/MeetingResources/SharePoint Build Script Project.zip"&gt;build script project&lt;/a&gt;.  &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;I also wanted to share a solution on a issue I reported in my session related to WSPBuilder. In my experience WSPBuilder at times exhibited a very long build time for solution packages, sometimes as much as 5-10 minutes. A recent community post on codeplex provides a solution to the issue. It would appear that wspbuilder historically made use of reflection to gleam information about references, in a recent release they moved over to a a mono related project called Cecil that is causing the performance impact. Checkout &lt;a title="http://wspbuilder.codeplex.com/Thread/View.aspx?ThreadId=56751" href="http://wspbuilder.codeplex.com/Thread/View.aspx?ThreadId=56751"&gt;http://wspbuilder.codeplex.com/Thread/View.aspx?ThreadId=56751&lt;/a&gt; for more details and the fix.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="/Lists/Posts/Attachments/52/SPS_Charlotte_Speakers_2_30840492.png"&gt;&lt;img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="SPS_Charlotte_Speakers" border="0" alt="SPS_Charlotte_Speakers" width="644" height="244" src="/Images/blog_viewfusion_local/Archive/SPSATCharlotte/SPS_Charlotte_Speakers_thumb_30840492.png" /&gt;&lt;/a&gt;  &lt;/p&gt;
&lt;p&gt;SharePoint Saturday Charlotte – Speakers &lt;/p&gt;
&lt;/div&gt;&lt;img src="http://www.sharepointbrainfreeze.com/aggbug/10.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/SharepointBrainFreeze/~4/eTkbA5YR3f8" height="1" width="1"/&gt;</description>
            <dc:creator>Blog Author</dc:creator>
            <guid isPermaLink="false">http://www.sharepointbrainfreeze.com/archive/2009/06/26/SharePointSaturdayCharlotteSessionFollow-up.aspx</guid>
            <pubDate>Fri, 26 Jun 2009 18:43:51 GMT</pubDate>
            <comments>http://www.sharepointbrainfreeze.com/archive/2009/06/26/SharePointSaturdayCharlotteSessionFollow-up.aspx#feedback</comments>
            <wfw:commentRss>http://www.sharepointbrainfreeze.com/comments/commentRss/10.aspx</wfw:commentRss>
            <trackback:ping>http://www.sharepointbrainfreeze.com/services/trackbacks/10.aspx</trackback:ping>
        <feedburner:origLink>http://www.sharepointbrainfreeze.com/archive/2009/06/26/SharePointSaturdayCharlotteSessionFollow-up.aspx</feedburner:origLink></item>
        <item>
            <title>Charlotte SharePoint Saturday This Weekend – See Everyone There!</title>
            <link>http://feedproxy.google.com/~r/SharepointBrainFreeze/~3/mcGEEEp76l8/Charlotte SharePoint Saturday This Weekend – See Everyone There!.aspx</link>
            <description>&lt;div class=ExternalClass7B80EB9AE1FE440B9423A1CEB323C1AC&gt;&lt;p&gt; &lt;/p&gt;  &lt;p&gt;Wow what a busy week. Lots of activity on the community front this week for me. Had a great meeting last night with the rest of the Triangle SharePoint User Group Leadership , we’ve got some really great plans and announcements coming up for the SharePoint community in Raleigh. The new &lt;a href="http://www.trispug.com" target="_blank"&gt;TRISPUG&lt;/a&gt; site is coming along nicely and we’ve just opened up registration. I’m ending the week with a trip out to Charlotte for SharePoint Saturday event with some of the rest of the B&amp;amp;R crew (Michael Lotter, Nas Ali, and Becky Isserman) and also my family in tow (we’re spending Sunday at the &lt;a href="http://www.greatwolf.com/concord/waterpark" target="_blank"&gt;Great Wolf Lodge&lt;/a&gt; – fun fun fun).  I’m really looking forward to the event.  I’ve been doing a good bit of work behind the scenes with SharePoint Saturday but I’ve only made it to the first event. It’s been great to see the success that Michael has had with the SharePoint Saturday concept. I’m looking forward to catching up with folks that I really wish I could see more often (new and old acquaintances).&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;I’ve been doing my Back to Basic – Feature Development session for my last few speaking engagements and I thought a new presentation would be a good change.  I recently finished an engagement with a client helping them setup a build environment for SharePoint and it was such a good experience (both challenges and fun stuff), with lots of questions from the client, that I thought the community might get some value from it as well.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.sharepointsaturday.org/charlotte/meetings/10/EaseYourDeploymentBurdensbySettingupaSharePointAutomatedBuildServer.aspx"&gt;&lt;strong&gt;Ease Your Deployment Burdens by Setting up a SharePoint Automated Build Server&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Every project can benefit from the practice of implementing a build server. From daily builds to continuous integration, the benefits have never been in dispute, but many have felt that SharePoint has too many complexities to be supported in a build environment. In this session we’ll see how with the use of msbuild and some custom build tasks we can make the process of compiling, solution packaging, testing, and deployment very straightforward.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Not registered yet? Checkout &lt;a title="http://www.sharepointsaturday.org/charlotte/default.aspx" href="http://www.sharepointsaturday.org/charlotte/default.aspx"&gt;http://www.sharepointsaturday.org/charlotte/default.aspx&lt;/a&gt; . Look forward to seeing everyone there!&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.sharepointbrainfreeze.com/aggbug/11.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/SharepointBrainFreeze/~4/mcGEEEp76l8" height="1" width="1"/&gt;</description>
            <guid isPermaLink="false">http://www.sharepointbrainfreeze.com/archive/2009/06/18/Charlotte SharePoint Saturday This Weekend – See Everyone There!.aspx</guid>
            <pubDate>Thu, 18 Jun 2009 18:07:12 GMT</pubDate>
            <comments>http://www.sharepointbrainfreeze.com/archive/2009/06/18/Charlotte SharePoint Saturday This Weekend – See Everyone There!.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://www.sharepointbrainfreeze.com/comments/commentRss/11.aspx</wfw:commentRss>
            <trackback:ping>http://www.sharepointbrainfreeze.com/services/trackbacks/11.aspx</trackback:ping>
        <feedburner:origLink>http://www.sharepointbrainfreeze.com/archive/2009/06/18/Charlotte SharePoint Saturday This Weekend – See Everyone There!.aspx</feedburner:origLink></item>
    </channel>
</rss>

