<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Gabe Hilado&#039;s SharePoint &#38; ASP.NET Blog &#187; SharePoint</title>
	<atom:link href="http://spdeveloper.net/tag/sharepoint/feed/" rel="self" type="application/rss+xml" />
	<link>http://spdeveloper.net</link>
	<description>Microsoft, SharePoint, ASP.NET, Software Solutions</description>
	<lastBuildDate>Thu, 29 Sep 2011 15:13:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>SharePoint 2010 in Windows 2008 R2 and Kerberos</title>
		<link>http://spdeveloper.net/2011/05/sharepoint-2010-in-windows-2008-r2-and-kerberos/</link>
		<comments>http://spdeveloper.net/2011/05/sharepoint-2010-in-windows-2008-r2-and-kerberos/#comments</comments>
		<pubDate>Thu, 26 May 2011 19:48:55 +0000</pubDate>
		<dc:creator>Gabe Hilado</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[IIS 7]]></category>
		<category><![CDATA[SharePoint 2010]]></category>

		<guid isPermaLink="false">http://spdeveloper.net/?p=417</guid>
		<description><![CDATA[There are two options when configuring SharePoint 2010 security in &#8220;classic mode&#8221; (as opposed to claims-based). You can use Basic (NTLM) or Negotiate (Kerberos). If you use NTLM, you may run into double-hop issues. This is why you will probably want to use Kerberos over NTLM (this assuming you&#8217;re not yet moving towards claims-based authentication). [...]]]></description>
			<content:encoded><![CDATA[<p>There are two options when configuring SharePoint 2010 security in &#8220;classic mode&#8221; (as opposed to claims-based). You can use <strong>Basic (NTLM)</strong> or <strong>Negotiate (Kerberos)</strong>. If you use NTLM, you may run into <a href="http://www.google.com/#sclient=psy&amp;hl=en&amp;rlz=1R2ADRA_enUS384&amp;source=hp&amp;q=kerberos+double-hop" target="_blank">double-hop issues</a>. This is why you will probably want to use Kerberos over NTLM (this assuming you&#8217;re not yet moving towards claims-based authentication).</p>
<p>So, you want to use Kerberos. During the configuration of SharePoint after installation,  in the Configuration Wizard, you will be asked to choose which security setting you want to use. If you choose Negotiate (Kerberos), and then click Next button on the wizard, you will get a prompt like the following:</p>
<p><a href="http://spdeveloper.net/wp-content/uploads/2011/05/sp-secruity-kerberos1.png"><img class="aligncenter size-medium wp-image-429" title="SP Configuration Wizard - Kerberos or NTLM?" src="http://spdeveloper.net/wp-content/uploads/2011/05/sp-secruity-kerberos1-300x250.png" alt="SP Configuration Wizard - Kerberos or NTLM?" width="300" height="250" /></a></p>
<p>What this message tells you is that you or your domain administrators must configuration <strong>Security Principal Names</strong> or <strong>SPNs </strong>in Active Directory.</p>
<p>In case you&#8217;re wondering, here&#8217;s a summary of my SharePoint lab environment:</p>
<ul>
<li>Windows 2008 Server R2 OS on all servers. AD is compatible with Windows Server 2003 features.</li>
<li>Microsoft SQL Server 2008 R2</li>
<li>SharePoint Server 2010</li>
</ul>
<p>You can use use <a href="http://technet.microsoft.com/en-us/library/cc773257(WS.10).aspx" target="_blank">SetSPN tool</a> to configure the SPNs for your SharePoint environment. Or, if you&#8217;re curious to see  what SPNs &#8220;look like&#8221; in Active Directory, you can use ADSIEdit. If you use ADSIEdit, login to the domain controller or use a server that has the Active Directory tools installed in it. When you open up ADSIEdit, expand the CN=Users tree and look for the domain account you want to setup SPNs for. The domain account that you want to setup SPNs for is typically the identity of the SharePoint Web site application pool. In the example below, I was adding SPNs to the &#8220;SP Web App Pool&#8221; account, which will be the service account used by the SharePoint Web site. Right-click the domain account in ADSIEdit and click Properties. In the Attribute Editor tab, look for <strong>servicePrincipalName. </strong></p>
<p><img class="aligncenter size-medium wp-image-432" title="ADSIEDit - Add SPNs" src="http://spdeveloper.net/wp-content/uploads/2011/05/adsiedit-add-spn-300x200.png" alt="ADISEdit - Add SPNs" width="300" height="200" /></p>
<p>Edit it and you can then add the SPNs for the domain account.  I have included a link in the Resources section on the bottom of this article to a Technet article that explains in full detail how to add SPNs in Active Directory.</p>
<p>In addition to adding SPNs to the service account, you must also <strong>enable delegation</strong> for the service account. Go to Active Directory and look for the service account. If you have setup SPNs for the domain account, you should see a Delegation tab on the user properties:</p>
<p><a href="http://spdeveloper.net/wp-content/uploads/2011/05/service-account-allow-for-delegation.png"><img class="aligncenter size-medium wp-image-433" title="Service Account allowed for delegation" src="http://spdeveloper.net/wp-content/uploads/2011/05/service-account-allow-for-delegation-221x300.png" alt="Service Account allowed for delegation" width="221" height="300" /></a></p>
<p>Check &#8220;Trust this user for delegation in specified services only&#8221;. And then select &#8220;Use any authentication protocol&#8221;. Finally, add the SPNs to the &#8220;Services to which the account can present delegated credentials&#8221; list. Links on the resources list will show you how to do this in full details.</p>
<p>In MOSS 2007, you have to setup SPNs for the service account and choose Kerberos as authentication mode and your SharePoint is good to go to use Kerberos. Setting up SPNs for SharePoint service accounts is nothing new. Well, in my lab environment, my SharePoint 2010 is running on Windows Server 2008 R2 with IIS7. The expected behaviour after adding SPNs was that the user (me) was prompted 3 times by the SharePoint site and only to render nothing after the 3 prompts for login. No matter how carefully I typed-in a domain account into the login prompt, I couldn&#8217;t get in!</p>
<p>Apparently, in IIS7, there are new settings that you have to configure in addition to setting up SPNs for the service account. You have to edit the <strong>applicationHost.config</strong> file in order to enable <strong>WindowsAuthentication</strong>. This <a href="http://www.iis.net/ConfigReference/system.webServer/security/authentication/windowsAuthentication" target="_blank">IIS.NET article</a> explains that IIS7 installs with windowsAuthentication disabled by default. But I have to give credit to Spence for his <a href="http://www.harbar.net/archive/2008/05/18/Using-Kerberos-with-SharePoint-on-Windows-Server-2008.aspx" target="_blank">SharePoint article on how to enable Kerberos</a>. Spence&#8217;s article was what actually got me moving in the right direction.</p>
<p>So I enabled windowsAuthentication (list of resources at the bottom of this article). When I tried to connect to the SharePoint site, I was being prompted to login!! Why?? So I typed-in domain account. On the first attempt, I was able to get into the SharePoint site.</p>
<p>It felt like challenge-response (NTLM) because I was prompted to login. I look at the Security Event Log of the SharePoint Web server. I see that the user logged-in using Kerberos!</p>
<p><a href="http://spdeveloper.net/wp-content/uploads/2011/05/event-4624.png"><img class="aligncenter size-medium wp-image-434" title="Event 4624 in Security Event Log" src="http://spdeveloper.net/wp-content/uploads/2011/05/event-4624-300x208.png" alt="Event 4624 in Security Event Log" width="300" height="208" /></a></p>
<p><a href="http://spdeveloper.net/wp-content/uploads/2011/05/event-4624-showing-its-kerberos.png"><img class="aligncenter size-medium wp-image-435" title="Event 4624 showing it was Kerberos" src="http://spdeveloper.net/wp-content/uploads/2011/05/event-4624-showing-its-kerberos-300x195.png" alt="Event 4624 showing it was Kerberos" width="300" height="195" /></a></p>
<p>So what now? Why was I still getting prompted to login? I forgot something&#8211;Internet Explorer security settings! I have to add the URL to my SharePoint 2010 portal in <strong>Intranet Zone sites</strong>. Also, you have to configure the &#8220;Custom Level&#8221; of the Intranet zone such that &#8220;Automatic logon onl in Intranet zone&#8221; is selected:</p>
<p><a href="http://spdeveloper.net/wp-content/uploads/2011/05/Internet-Explorer-Security-Settings-for-Intranet-Zone.png"><img class="aligncenter size-medium wp-image-436" title="Internet Explorer Security Settings for Intranet Zone" src="http://spdeveloper.net/wp-content/uploads/2011/05/Internet-Explorer-Security-Settings-for-Intranet-Zone-264x300.png" alt="Internet Explorer Security Settings for Intranet Zone" width="264" height="300" /></a></p>
<p>If the SharePoint site is not detected as an Intranet zone, you will notice in IE status bar:</p>
<p><a href="http://spdeveloper.net/wp-content/uploads/2011/05/portal-internet-zone.png"><img class="aligncenter size-medium wp-image-437" title="SharePoint Portal - Internet Zone" src="http://spdeveloper.net/wp-content/uploads/2011/05/portal-internet-zone-300x165.png" alt="SharePoint Portal - Internet Zone" width="300" height="165" /></a></p>
<p>If you have admin rights to the workstation, you can probably edit the list of sites in Intranet Zones in IE Security settings and enable automatic logon in Intranet sites Well, in my setup, the workstation&#8211;what a user can change and cannot change&#8211;is controlled by group policies.</p>
<p>I had to create a new group policy and link it to my domain (or you can edit the default group policy for the domain if it&#8217;s just a lab environment) When editing the GPO, the path to add SharePoint sites to Intranet Zone is:</p>
<p>Computer Configuration&gt;Administrative Templates&gt;Windows Components&gt;Internet Explorer&gt;Internet Control Panel&gt;Security Page&gt;Site to Zone Assignment List</p>
<p><a href="http://spdeveloper.net/wp-content/uploads/2011/05/site-to-zone-assignments-list-GPO.png"><img class="aligncenter size-medium wp-image-438" title="IE Site to Zone Assignment List in GPO" src="http://spdeveloper.net/wp-content/uploads/2011/05/site-to-zone-assignments-list-GPO-300x162.png" alt="IE Site to Zone Assignment List in GPO" width="300" height="162" /></a></p>
<p>When you edit the Site to Zone Assignment list, you&#8217;ll be presented a dialog box. You can add the sites (typically just make it &#8220;http//*.yourFQDN&#8221; so that all sites in your lab environment are detected as Intranet sites):</p>
<p><a href="http://spdeveloper.net/wp-content/uploads/2011/05/enter-zone-assignments-GPO.png"><img class="aligncenter size-medium wp-image-439" title="Enter zone assignments in GPO" src="http://spdeveloper.net/wp-content/uploads/2011/05/enter-zone-assignments-GPO-300x205.png" alt="Enter zone assignments in GPO" width="300" height="205" /></a></p>
<p>After editing GPO, propagate the new policy by restarting the workstation. After the workstation restarts, I hit the SharePoint site again and no more login prompts!! Also, notice on the status bar that the SharePoint site is detected as an Intranet site:</p>
<p><a href="http://spdeveloper.net/wp-content/uploads/2011/05/portal-intranet-zone.png"><img class="aligncenter size-medium wp-image-440" title="Portal Intranet Zone" src="http://spdeveloper.net/wp-content/uploads/2011/05/portal-intranet-zone-300x157.png" alt="Portal Intranet Zone" width="300" height="157" /></a></p>
<p>Hopefully, this article demonstrated to you how to configure Kerberos for SharePoint 2010. Yes, claims-based authentication is supposed to be the &#8220;preferred&#8221; mode these days in SharePoint but plenty of organizations out there will stick with Kerberos (Windows integrated security) for a little while. If anything, this article serve as a jump point to other great articles out there on how to accomplish Kerberos in SharePoint. List of links below.</p>
<p><span style="text-decoration: underline;">Resources:</span></p>
<ul>
<li>Full Technet article on how to configure Kerberos authentication for SharePoint 2010. Very comprehensive. It talks about SPNs and how to add them in Active Directory. This is a good place to start: <a href="http://technet.microsoft.com/en-us/library/gg502602.aspx">http://technet.microsoft.com/en-us/library/gg502602.aspx</a></li>
<li>SharePoint 2010 and Kerberos: <a href="http://www.harbar.net/archive/2010/03/31/sharepoint-2010-and-kerberos.aspx">http://www.harbar.net/archive/2010/03/31/sharepoint-2010-and-kerberos.aspx</a></li>
<li>Using Kerberos with SharePoint on Windows Server 2008: <a href="http://www.harbar.net/archive/2008/05/18/Using-Kerberos-with-SharePoint-on-Windows-Server-2008.aspx">http://www.harbar.net/archive/2008/05/18/Using-Kerberos-with-SharePoint-on-Windows-Server-2008.aspx</a></li>
<li>Very detailed walkthrough on how to enable Kerberos for ANY Web application: <a href="http://blogs.technet.com/b/askds/archive/2008/05/29/kerberos-authentication-problems-service-principal-name-spn-issues-part-1.aspx">http://blogs.technet.com/b/askds/archive/2008/05/29/kerberos-authentication-problems-service-principal-name-spn-issues-part-1.aspx</a></li>
<li>Configuring Kerberos Authentication in SharePoint 2010: <a href="http://blogs.msdn.com/b/russmax/archive/2009/10/20/configuring-kerberos-authentication-in-sharepoint-2010-part-1.aspx">http://blogs.msdn.com/b/russmax/archive/2009/10/20/configuring-kerberos-authentication-in-sharepoint-2010-part-1.aspx</a></li>
<li>&lt;windowsAuthentication&gt; element in IIS 7: <a href="http://www.iis.net/ConfigReference/system.webServer/security/authentication/windowsAuthentication">http://www.iis.net/ConfigReference/system.webServer/security/authentication/windowsAuthentication</a></li>
<li>How to use Group Policy to configure Internet Explorer Security Zones: <a href="http://www.grouppolicy.biz/2010/03/how-to-use-group-policy-to-configure-internet-explorer-security-zone-sites/">http://www.grouppolicy.biz/2010/03/how-to-use-group-policy-to-configure-internet-explorer-security-zone-sites/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spdeveloper.net/2011/05/sharepoint-2010-in-windows-2008-r2-and-kerberos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Error installing SharePoint 2010 Prerequisites</title>
		<link>http://spdeveloper.net/2011/05/error-installing-sharepoint-2010-prerequisites/</link>
		<comments>http://spdeveloper.net/2011/05/error-installing-sharepoint-2010-prerequisites/#comments</comments>
		<pubDate>Thu, 19 May 2011 19:45:15 +0000</pubDate>
		<dc:creator>Gabe Hilado</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SharePoint Deployment]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[SharePoint Installation]]></category>
		<category><![CDATA[Windows Server 2008]]></category>

		<guid isPermaLink="false">http://spdeveloper.net/?p=392</guid>
		<description><![CDATA[When installing SharePoint, you have to install prerequisites first. If you launch the SharePoint Prerequisites Installer from the SharePoint setup GUI (clicking the link), you may notice that most prerequisites (like IIS) installs correctly but there are some that wouldn&#8217;t install correctly. Some of the errors that I experienced: Error: Startup task doesn&#8217;t exist. This [...]]]></description>
			<content:encoded><![CDATA[<div>When installing SharePoint, you have to install prerequisites first. If you launch the <strong>SharePoint Prerequisites Installer</strong> from the SharePoint setup GUI (clicking the link), you may notice that most prerequisites (like IIS) installs correctly but there are some that wouldn&#8217;t install correctly. Some of the errors that I experienced:</div>
<ul>
<li>Error: Startup task doesn&#8217;t exist. This is not a continuation after a restart.</li>
<li>Error: This file does not exist</li>
<li>Error: The tool was unable to install Hotfix for <strong>Microsoft Windows (KB976462)</strong>.</li>
</ul>
<p>I searched the Web for the errors I got and it seem that a common recommendation is to simply run prerequisiteinstaller.exe from the command-line:</p>
<ul>
<li>Open up a command window</li>
<li>Go to your SharePoint setup location (like D:\ if running from CD drive)</li>
<li>Enter &#8220;prerequisiteinstaller.exe&#8221; and then press enter</li>
<li>A GUI would popup but just go ahead and proceed. It should finish installation.</li>
<li>Review the log file, located in <em>%DEFAULTUSERPROFILE%\Temp</em> and named <em>PrerequisiteInstaller.[datetime].log</em>. Make sure there are no errors on the latest log file.</li>
</ul>
<div>If no more errors, proceed with SharePoint 2010 installation.</div>
]]></content:encoded>
			<wfw:commentRss>http://spdeveloper.net/2011/05/error-installing-sharepoint-2010-prerequisites/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Internal 500 Error When Changing the URL to a Badly-Formed Value</title>
		<link>http://spdeveloper.net/2010/06/internal-500-error-when-changing-the-url-to-a-badly-formed-value/</link>
		<comments>http://spdeveloper.net/2010/06/internal-500-error-when-changing-the-url-to-a-badly-formed-value/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 18:30:44 +0000</pubDate>
		<dc:creator>Gabe Hilado</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Content Management Systems]]></category>
		<category><![CDATA[STSADM]]></category>
		<category><![CDATA[WSS 3.0]]></category>

		<guid isPermaLink="false">http://spdeveloper.net/?p=349</guid>
		<description><![CDATA[Interesting issue we had to troubleshoot today. This issue is related to SharePoint 2007.  Say you have a sub-site in a SharePoint site collection (let&#8217;s call it &#8220;Subsite A&#8221;) and the user/admin changes the URL of the site to something malformed, what happens? We start &#8220;Subsite A&#8221; like the following: Then, we change the URL [...]]]></description>
			<content:encoded><![CDATA[<p>Interesting issue we had to troubleshoot today. This issue is related to SharePoint 2007.  Say you have a sub-site in a SharePoint site collection (let&#8217;s call it &#8220;Subsite A&#8221;) and the user/admin changes the URL of the site to something malformed, what happens?</p>
<p>We start &#8220;Subsite A&#8221; like the following:</p>
<p><img class=" alignnone" title="Sample SharePoint Web Site" src="http://spdeveloper.net/wp-content/uploads/2010/06/062410_1829_Internal5001.png" alt="" width="628" height="393" /></p>
<p>Then, we <strong>change the URL into something malformed</strong> (deliberately for this exercise). See the Web Site Address field below? We&#8217;re purposely putting in a bad value (the end-user accidentally did it in the real-world scenario).</p>
<p><img class=" alignnone" title="Changing the Web Site URL with Badly-Formed Value" src="http://spdeveloper.net/wp-content/uploads/2010/06/062410_1829_Internal5002.png" alt="" width="628" height="416" /></p>
<p>After you click the <em>Save</em> button on the <em>Title, Description, and Icon</em> Settings Page, you get the following error on the browser:</p>
<p><strong><em>This error (HTTP 500 Internal Server Error) means that the website you are visiting had a server problem which prevented the webpage from displaying.<br />
</em></strong></p>
<p>Trying to access the site yields HTTP 500 error:</p>
<p><img class=" alignnone" title="Internal 500 error when you try to access the SharePoint site" src="http://spdeveloper.net/wp-content/uploads/2010/06/062410_1829_Internal5003.png" alt="" width="628" height="408" /></p>
<p>You think maybe you can rename using SharePoint Designer. But SP Designer throws you an error message instead:</p>
<p><img class=" alignnone" title="Server error: The version of the Windows SharePoint Services running on the server is more recent than the version of the SharePoint Designer you are using. You need a more recent version of the SharePoint Designer." src="http://spdeveloper.net/wp-content/uploads/2010/06/062410_1829_Internal5004.png" alt="" width="628" height="363" /></p>
<p><strong><em>Server error: The version of the Windows SharePoint Services running on the server is more recent than the version of the SharePoint Designer you are using. You need a more recent version of the SharePoint Designer.</em></strong></p>
<p>But the SharePoint Designer error message is misleading&#8211;the SharePoint site is MOSS 2007. It&#8217;s the bad URL causing this.</p>
<p>You can fix this by using <strong>STSADM renameweb</strong> command. In the screenshot below, I rename the badly-formed URL to its original URL using <strong>STSADM renameWeb</strong>:</p>
<p><img src="http://spdeveloper.net/wp-content/uploads/2010/06/062410_1829_Internal5005.png" alt="" /></p>
<p>The site owner accidentally put in a bad URL and that is why we&#8217;re using STSADM to fix it. It&#8217;s hard to mess-up the site-collection URL. But if you need to change the URL of a site-collection, you can use <strong>STSADM renamesite</strong>.</p>
<p>For more details on how to use these commands, visit:</p>
<ul>
<li><a href="http://support.microsoft.com/kb/939535">How to use the new &#8220;renamesite&#8221; operation to change the URL of a host-named site collection in Windows SharePoint Services 3.0.</a></li>
<li><a href="http://technet.microsoft.com/en-us/library/cc287716(office.12).aspx">Renameweb Stsadm operation (Windows SharePoint Services)</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spdeveloper.net/2010/06/internal-500-error-when-changing-the-url-to-a-badly-formed-value/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using a Feature-Receiver to modify the Web.Config File</title>
		<link>http://spdeveloper.net/2010/04/using-a-feature-receiver-to-modify-the-web-config-file/</link>
		<comments>http://spdeveloper.net/2010/04/using-a-feature-receiver-to-modify-the-web-config-file/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 20:26:43 +0000</pubDate>
		<dc:creator>Gabe Hilado</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://spdeveloper.net/?p=221</guid>
		<description><![CDATA[We had a previous SharePoint project where we installed a custom HTTPModule to the SharePoint Web application. Since the SharePoint manifest file cannot inject entries into the httpModules section of the Web.config file (the manifest file can only insert entries inside the SharePoint section of the Web.config such SafeControl entries), we had to use a [...]]]></description>
			<content:encoded><![CDATA[<p>We had a previous SharePoint project where we installed a custom HTTPModule to the SharePoint Web application. Since the SharePoint manifest file cannot inject entries into the <em>httpModules</em> section of the <strong>Web.config</strong> file (the manifest file can only insert entries inside the SharePoint section of the Web.config such SafeControl entries), we had to use a custom <strong>feature-receiver</strong> class, based on the <strong>SPFeatureReceiver</strong>.<strong> </strong>The custom feature-receiver class did it&#8217;s job nicely; whenever the feature got activated, the required entry in the <em>httpModules</em> section of the Web.config file got inserted.</p>
<p>Sequence property of the WebConfigModification can be used to figure out the uninstall order.</p>
<p>Unnamed sections such as <em><strong>connectionStrings</strong></em> and <em><strong>bindings</strong></em> sections, appear to have an XPATH expression that may result in duplicate matching. But, the <strong>ApplyWebConfigModifications</strong> method of the WebConfigModifications object will do it correctly as long as:</p>
<ul>
<li>EnsureChildNode is used as the type</li>
<li>Add/Remove in order that is logical. Example: add <em>connectionStrings</em> section first then the <em>add</em> elements inside the connectionString section.</li>
<li>If you are worried that de-activating a feature will obliterate the connectionStrings section because your feature created it, don&#8217;t. SharePoint will only take out the connectionStrings if there are no other entries created by the <strong>ApplyWebConfigModifications</strong> inside the connectionStrings section. If other features inserted 1 or more connection-string entries there, your feature-receiver will not remove the connectionStrings section. Now, if the connectionString section got edited manually, the SharePoint WebConfigModifcations object will not know this and it doesn&#8217;t matter how many child-nodes there are inside the  connectionString object. The root element (connectionString) in this case will be removed because in SharePoint&#8217;s perspective, there are no existing Web-config modifications inside connectionString.</li>
</ul>
<p><span style="text-decoration: underline;">Conclusion</span>: if you are going to adopt feature-receivers to install web.config entries such as connection-strings and bindings (for Service-References), you must also adopt to policy to discourage manual insert/modification of the web.config entries. Be consistent.</p>
]]></content:encoded>
			<wfw:commentRss>http://spdeveloper.net/2010/04/using-a-feature-receiver-to-modify-the-web-config-file/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint Saturday DC &#8211; May 15</title>
		<link>http://spdeveloper.net/2010/04/sharepoint-saturday-dc-may-15/</link>
		<comments>http://spdeveloper.net/2010/04/sharepoint-saturday-dc-may-15/#comments</comments>
		<pubDate>Wed, 07 Apr 2010 03:57:06 +0000</pubDate>
		<dc:creator>Gabe Hilado</dc:creator>
				<category><![CDATA[Networking Events]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://spdeveloper.net/?p=218</guid>
		<description><![CDATA[SharePoint Saturday is coming up to the DC Metro area once more! It is scheduled for May 15 and it is going to be held at Northern VA Community College in Annandale. Here&#8217;s the link: http://www.sharepointsaturday.org/dc/default.aspx If you&#8217;re around DC area and you&#8217;re an IT professional using SharePoint, I recommend you attend. And you don&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>SharePoint Saturday is coming up to the DC Metro area once more! It is scheduled for May 15 and it is going to be held at Northern VA Community College in Annandale. Here&#8217;s the link:</p>
<p><a href="http://www.sharepointsaturday.org/dc/default.aspx">http://www.sharepointsaturday.org/dc/default.aspx</a></p>
<p>If you&#8217;re around DC area and you&#8217;re an IT professional using SharePoint, I recommend you attend. And you don&#8217;t want to miss this one. The last SP Saturday DC that I attended, they intentionally banned discussions of SharePoint 2010 in the official agenda (you can talk it on the hallways and breaks but wasn&#8217;t allowed at the session topic). Looking at the current lineup of the sessions, there are going to be a lot of SharePoint 2010 sessions! So attend!</p>
<p>SharePoint Saturdays typically have good sessions and it&#8217;s an opportunity to meet other SharePoint folks. If you&#8217;re not from the DC area, SharePoint Saturdays are all over the country and I would recommend checking  what the closest SharePoint Saturday is.</p>
]]></content:encoded>
			<wfw:commentRss>http://spdeveloper.net/2010/04/sharepoint-saturday-dc-may-15/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint Developer Skills</title>
		<link>http://spdeveloper.net/2010/04/sharepoint-developer-skills/</link>
		<comments>http://spdeveloper.net/2010/04/sharepoint-developer-skills/#comments</comments>
		<pubDate>Fri, 02 Apr 2010 14:57:58 +0000</pubDate>
		<dc:creator>Gabe Hilado</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Career]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Developers]]></category>
		<category><![CDATA[Enterprise]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://spdeveloper.net/?p=215</guid>
		<description><![CDATA[There is big SharePoint team in one of my customers and it&#8217;s a good blend of developers, engineers, analysts, and managers. When this team started in 2007, only a handful (2 people really) was knowledgeable in the ways of SharePoint. But because the user-base for this organization is so big, technical resources of other backgrounds [...]]]></description>
			<content:encoded><![CDATA[<p>There is big SharePoint team in one of my customers and it&#8217;s a good blend of developers, engineers, analysts, and managers. When this team started in 2007, only a handful (2 people really) was knowledgeable in the ways of SharePoint. But because the user-base for this organization is so big, technical resources of other backgrounds started getting recruited to become part of the SharePoint team. Traditional network engineers became SharePoint farm admins. ASP.NET developers became SharePoint developers (that’s how I got into SharePoint). Other Web developers (Coldfusion) became SharePoint developers too.</p>
<p>There are still some Coldfusion developers in this organization but these Coldfusion apps are being phased out and eventually  will be converted to ASP.NET and/or SharePoint. These Coldfusion developers do not have a background on ASP.NET programming model, which is really different, closer to VB6 model if you look at it that it is closer to “classic ASP” model. “Classic ASP”, Coldfusion, and PHP are in the same category in my book—they are server-side scripting. ASP.NET and  SharePoint on the other hand are more object-oriented.</p>
<p>One of the Coldfusion developers asked me which topics on <strong>ASP.NET and SharePoint</strong> should they learn and in what order. They are excited to develop SharePoint stuff such as Web parts and workflows but need some guidance on where to start.</p>
<p>Here’s the list of high-level <strong>skills</strong>/topics I pointed out one should in order to <strong>develop SharePoint solutions</strong>:</p>
<ul>
<li><strong>ASP.NET model</strong>
<ul>
<li>ASP.NET User Controls</li>
<li>Intrinsic Objects (HttpContext, Application, Request, Response, Server, etc.)</li>
<li>ASP.NET Page life-cycle</li>
<li>C#</li>
<li>ASP.NET Web App configuration files</li>
<li>.NET Namespaces</li>
</ul>
</li>
<li><strong>Object-Oriented/Component Programming</strong>
<ul>
<li>Properties and Methods</li>
<li>Events</li>
<li>Delegates</li>
<li>Inheritance</li>
<li>Implementation (interfaces and abstracts)</li>
</ul>
</li>
<li><strong>SharePoint Features Development</strong>
<ul>
<li>Visual Studio SharePoint Project Extensions/Templates</li>
<li>SharePoint Object Model</li>
<li>Deploying Features using STSADM</li>
</ul>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spdeveloper.net/2010/04/sharepoint-developer-skills/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint &#8220;Developers&#8221; and &#8220;Administrators&#8221;</title>
		<link>http://spdeveloper.net/2010/04/sharepoint-developers-and-administrators/</link>
		<comments>http://spdeveloper.net/2010/04/sharepoint-developers-and-administrators/#comments</comments>
		<pubDate>Fri, 02 Apr 2010 02:25:11 +0000</pubDate>
		<dc:creator>Gabe Hilado</dc:creator>
				<category><![CDATA[Career]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Administrators]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Developers]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[SharePoint Installation]]></category>
		<category><![CDATA[STSADM]]></category>
		<category><![CDATA[Web Parts]]></category>
		<category><![CDATA[WSP]]></category>

		<guid isPermaLink="false">http://spdeveloper.net/?p=208</guid>
		<description><![CDATA[I was viewing my blog today and noticed the tag cloud on my sidebar. The most prominent tags are &#8220;SharePoint&#8221;, &#8220;Developers&#8221;, and &#8220;Administrators&#8221;. SharePoint. Developers. Administrators. From time to time, I will meet SharePoint professionals in networking events or when interviewing job applicants at a customer site and I will ask what their SharePoint experience [...]]]></description>
			<content:encoded><![CDATA[<p>I was viewing my blog today and noticed the tag cloud on my sidebar. The most prominent tags are &#8220;SharePoint&#8221;, &#8220;Developers&#8221;, and &#8220;Administrators&#8221;. <strong>SharePoint</strong>. <strong>Developers</strong>. <strong>Administrators</strong>.</p>
<p>From time to time, I will meet SharePoint professionals in networking events or when interviewing job applicants at a customer site and I will ask what their SharePoint experience is like. &#8220;Oh I am a <strong>SharePoint Developer</strong>&#8220;. Then I find out that the extent of their development experience revolves around master-page and page-layout design, style/CSS customizations, and graphical/logo design. Basically, branding tasks. And then there is the &#8220;<strong>SharePoint Administrator</strong>&#8220;. &#8220;Oh, I am the site collection administrator and manage user-permissions, site-collection features, and sometimes recycle items for end-users from the Recycling Bin.&#8221;</p>
<p>I think people are calling themselves SharePoint Developer more than they should. In my opinion, a SharePoint developer is someone who can develop Web parts, workflows, user-controls, Web controls, ASPX pages, client-side scripting, and complete SharePoint solutions. In addition, they also understand deployment options such as creating solution packages. If your experience around SharePoint is limited to CSS, branding, and design stuff, you&#8217;re a <strong>designer</strong>, buddy; not a <strong>developer</strong>, but a <strong>designer</strong>.</p>
<p>Now, let&#8217;s talk about the &#8220;SharePoint Administrator&#8221;. Yes, to a point, the site-collection administrator is an administrator. But to me, and again, this is just my opinion, farm admins are the real SharePoint administrators. To call yourself a SharePoint administrator, especially on job interviews, you better know your SharePoint deployment scenarios, Central Admin, SharePoint disaster/recovery procedures, IIS, SQL Server, Windows Server OS, and the beloved &#8220;stsadm&#8221; command.</p>
<p>Sometimes I will encounter resumes where the job applicant puts &#8220;<strong>SharePoint Developer</strong>&#8221; or &#8220;<strong>SharePoint Administrator</strong>&#8221; in their work history but nothing in the roles and responsibilities indicate the degree of technical expertise required to be called a &#8220;real SharePoint Developer&#8221; or a &#8220;real SharePoint Administrator&#8221;! </p>
<p>The point I&#8217;m trying to make is please, please, please&#8211;do not inflate your work experience, especially when applying for jobs. You might fool the recruiters but you&#8217;re not going to fool the technical leads. Please be honest in your resumes because people will catch you if you think the inflated titles will make you a better candidate for a job.</p>
<p>Honesty people!</p>
]]></content:encoded>
			<wfw:commentRss>http://spdeveloper.net/2010/04/sharepoint-developers-and-administrators/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Read the Manifest File from a Sharepoint Package</title>
		<link>http://spdeveloper.net/2010/03/read-the-manifest-file-from-a-sharepoint-package/</link>
		<comments>http://spdeveloper.net/2010/03/read-the-manifest-file-from-a-sharepoint-package/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 14:39:06 +0000</pubDate>
		<dc:creator>Gabe Hilado</dc:creator>
				<category><![CDATA[Operations]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SharePoint Deployment]]></category>
		<category><![CDATA[Administrators]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Developers]]></category>
		<category><![CDATA[Features]]></category>
		<category><![CDATA[Web Parts]]></category>

		<guid isPermaLink="false">http://spdeveloper.net/?p=202</guid>
		<description><![CDATA[I was in a SharePoint governance meeting at one of my customer sites yesterday and the group is thinking of enforcing some rules as far as SharePoint solution packages go. I kept saying during the meeting &#8220;Inspect the manifest file so that you can view what files are going to be installed on the server and where they [...]]]></description>
			<content:encoded><![CDATA[<p>I was in a SharePoint governance meeting at one of my customer sites yesterday and the group is thinking of enforcing some rules as far as SharePoint solution packages go. I kept saying during the meeting &#8220;Inspect the manifest file so that you can view what files are going to be installed on the server and where they are going to get installed&#8221;. One of the network engineers asked <strong>&#8220;How do you read a manifest file given a WSP</strong>?&#8221; This is probably common knowledge to people who are SharePoint veterans. But if you didn&#8217;t know how it&#8217;s done, here&#8217;s how:</p>
<ol>
<li>Rename the <strong>wsp</strong> file to a .<strong>cab</strong> file</li>
<li>Open up the .cab file (used to be wsp) in WinZIP or something that can open a CAB file.</li>
<li>You can either: a)  extract all files in the cab file and open up the extracted manifest.xml; or b) look for manifest.xml in WinZIP and just extract that one single file.</li>
<li>Open up manifest.xml in notepad, Internet Explorer, or your preferred XML file viewer.</li>
</ol>
<p>That&#8217;s it!</p>
<p>Several of my upcoming posts will be on how to create solution packages. Stay tuned!</p>
]]></content:encoded>
			<wfw:commentRss>http://spdeveloper.net/2010/03/read-the-manifest-file-from-a-sharepoint-package/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dispose SharePoint Objects Correctly</title>
		<link>http://spdeveloper.net/2010/03/dispose-sharepoint-objects-correctly/</link>
		<comments>http://spdeveloper.net/2010/03/dispose-sharepoint-objects-correctly/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 22:01:33 +0000</pubDate>
		<dc:creator>Gabe Hilado</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Developers]]></category>
		<category><![CDATA[Web Parts]]></category>

		<guid isPermaLink="false">http://spdeveloper.net/?p=180</guid>
		<description><![CDATA[In the world of managed-code, the garbage-collector typically clears objects in memory automatically for you. Remember malloc() and free() in C++? In managed code, you just typically write &#8220;variable = new Object()&#8221; and the CLR will allocate the memory for you. In unmanaged world like C++, you had to allocated memory and then deallocate memory [...]]]></description>
			<content:encoded><![CDATA[<p>In the world of managed-code, the garbage-collector typically clears objects in memory automatically for you. Remember malloc() and free() in C++? In managed code, you just typically write &#8220;variable = new Object()&#8221; and the CLR will allocate the memory for you. In unmanaged world like C++, you had to allocated memory and then deallocate memory after use.</p>
<p>Most objects in ASP.NET Framework are allocated/deallocated in memory automatically. However, there are objects that inherit from the <strong>IDisposable. You have to explicitly dispose objects that implement the IDisposable interface or you will run the risk of memory leaks.</strong> Some examples of ASP.NET objects that implement IDisposable include Connection, Command, Adapater, and Reader objects (in the System.Data namespace). You can perform any of the following to dispose these objects properly:</p>
<pre class="brush: csharp;">

SQLConnection connection = new SQLConnection(connectionString);

//use the connection object here

connection.Dispose();
</pre>
<p> </p>
<p>Or, you can using the <strong><em>using </em></strong>statement:</p>
<pre class="brush: csharp;">

using(SQLConnection connection = new SQLConnection(connectionString))

{

                //use connection object here

} // don't have to call Dispose(); the using statement will dispose connection correctly
</pre>
<p>When working with SharePoint API (SharePoint .NET libraries and not the SharePoint Web services), <strong>it is important to know when and when not to dispose SharePoint objects.</strong> If you do not dispose objects in SharePoint, your server will run the risk of memory leaks which can lead to performance issues. If you dispose objects that you&#8217;re not supposed to call Dispose() on, you might inadvertently kill the SharePoint application! For example, the following code will definitely kill the SharePoint Web application:</p>
<pre class="brush: csharp;">

SPContext.Current.Web.Dispose(); // expect calls to your help-desk with this line in your code!
</pre>
<p> </p>
<p>If you are the custodian of the SharePoint farm, you might want to use the <strong><a href="http://code.msdn.microsoft.com/SPDisposeCheck">SP Dispose Checker Tool</a></strong> to ensure that the custom .NET assemblies being installed on your farm will not cause memory leaks.</p>
<p>For complete guidance on when and how to dispose SharePoint objects, you can read the <a href="http://blogs.msdn.com/rogerla/archive/2008/02/12/sharepoint-2007-and-wss-3-0-dispose-patterns-by-example.aspx">SP Dispose Team blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://spdeveloper.net/2010/03/dispose-sharepoint-objects-correctly/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Customizing WSP files using VSeWSS 1.3 in Visual Studio 2008</title>
		<link>http://spdeveloper.net/2009/12/editing-wsp-file-using-vsewss-1-3-in-visual-studio-2008/</link>
		<comments>http://spdeveloper.net/2009/12/editing-wsp-file-using-vsewss-1-3-in-visual-studio-2008/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 21:35:25 +0000</pubDate>
		<dc:creator>Gabe Hilado</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SharePoint Deployment]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[MOSS 2007]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Web Parts]]></category>
		<category><![CDATA[WSP]]></category>
		<category><![CDATA[WSS 3.0]]></category>

		<guid isPermaLink="false">http://spdeveloper.net/?p=154</guid>
		<description><![CDATA[Using VSeWSS 1.3 with Visual Studio 2008, when you create a new Web Part project, you can edit the Web part properties and descriptions using the WSP View. The typical Solution Explorer in VS 2008 looks like the following when working on a Web part project: In order to see the manifest.xml or feature.xml file, [...]]]></description>
			<content:encoded><![CDATA[<p>Using <strong>VSeWSS 1.3</strong> with Visual Studio 2008, when you create a new Web Part project, you can edit the Web part properties and descriptions using the WSP View. The typical Solution Explorer in VS 2008 looks like the following when working on a Web part project:</p>
<div id="attachment_155" class="wp-caption aligncenter" style="width: 291px"><img class="size-full wp-image-155" title="Solution Explorer in VS 2008" src="http://spdeveloper.net/wp-content/uploads/2009/12/solution-explorer.png" alt="Solution Explorer in VS 2008" width="281" height="216" /><p class="wp-caption-text">Solution Explorer in VS 2008</p></div>
<p>In order to see the manifest.xml or feature.xml file, you have to look at the &#8220;<strong><em>WSP View</em></strong>&#8220;. WSP View can be accessed by going to the menu and hitting <em>View&#8211;&gt;Other Windows&#8211;&gt;WSP View</em>. The WSP View looks like the following:</p>
<div id="attachment_156" class="wp-caption aligncenter" style="width: 293px"><img class="size-full wp-image-156" title="WSP View" src="http://spdeveloper.net/wp-content/uploads/2009/12/wsp-view.png" alt="WSP View" width="283" height="287" /><p class="wp-caption-text">WSP View</p></div>
<p>The <strong>manifest.xml</strong> file doesn&#8217;t contain &#8220;product description&#8221; type information. The <strong>manifest.xml</strong> contains assemblies and features information. The <strong>feature.xml</strong> file, that on the other hand, start containing &#8220;description&#8221; type data. Here&#8217;s what the feature.xml contents typically look like:</p>
<pre class="brush: xml;">

&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;

&lt;Feature Id=&quot;cfc5cfdd-62cf-4d98-aeba-e1b38ec6f64f&quot;

             Title=&quot;HelloPart&quot;

             Description=&quot;A Web part that wants to say hello to you.&quot;

             Scope=&quot;Site&quot; Version=&quot;1.0.0.0&quot; Hidden=&quot;FALSE&quot;

             DefaultResourceFile=&quot;core&quot; xmlns=&quot;http://schemas.microsoft.com/sharepoint/&quot;&gt;

  &lt;ElementManifests&gt;

    &lt;ElementManifest Location=&quot;HelloPart\HelloPart.xml&quot; /&gt;

    &lt;ElementFile Location=&quot;HelloPart\HelloPart.webpart&quot; /&gt;

  &lt;/ElementManifests&gt;

&lt;/Feature&gt;
</pre>
<p>See that <em><strong>Title</strong></em> and <em><strong>Description</strong></em> attributes inside the Feature element? They will get displayed in the Site Features Gallery: </p>
<div id="attachment_159" class="wp-caption aligncenter" style="width: 512px"><img class="size-full wp-image-159 " title="WP Title and Description in the Features Gallery" src="http://spdeveloper.net/wp-content/uploads/2009/12/features-gallery.png" alt="WP Title and Description in the Features Gallery" width="502" height="248" /><p class="wp-caption-text">WP Title and Description in the Features Gallery</p></div>
<p>What about the <strong>Web part file</strong> (in the example I&#8217;m using above, the filename is HelloPart.webpart)? What information can be customized and modified here? First, let&#8217;s take a look at the contents of the webpart file:</p>
<pre class="brush: xml;">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;

&lt;webParts&gt;

  &lt;webPart xmlns=&quot;http://schemas.microsoft.com/WebPart/v3&quot;&gt;

    &lt;metaData&gt;

      &lt;!--

      The following Guid is used as a reference to the web part class,

      and it will be automatically replaced with actual type name at deployment time.

      --&gt;

      &lt;type name=&quot;247ef4d4-489d-46d1-a628-8d8daa6267a3&quot; /&gt;

      &lt;importErrorMessage&gt;Cannot import HelloPart Web Part.&lt;/importErrorMessage&gt;

    &lt;/metaData&gt;

    &lt;data&gt;

      &lt;properties&gt;

        &lt;property name=&quot;Title&quot; type=&quot;string&quot;&gt;Gabe's Hello Web Part&lt;/property&gt;

        &lt;property name=&quot;Description&quot; type=&quot;string&quot;&gt;HelloPart is a user-friendly Web part....&lt;/property&gt;

      &lt;/properties&gt;

    &lt;/data&gt;

  &lt;/webPart&gt;

&lt;/webParts&gt;
</pre>
<p>Inside <em>webPart&#8211;&gt;data&#8211;&gt;properties</em> section, there are <em>property</em> elements. The first one is the &#8220;<strong><em>Title</em></strong>&#8221; and the other is the &#8220;<strong><em>Description</em></strong>&#8220;. The values for &#8220;Title&#8221; and &#8220;Description&#8221; contained in the webpart file are what gets displayed in the Web part catalog:</p>
<p> </p>
<div id="attachment_162" class="wp-caption aligncenter" style="width: 519px"><img class="size-full wp-image-162  " title="WP Title and Desription in the WP Catalog" src="http://spdeveloper.net/wp-content/uploads/2009/12/add-web-parts.png" alt="WP Title and Desription in the WP Catalog" width="509" height="509" /><p class="wp-caption-text">WP Title and Desription in the WP Catalog</p></div>
<p>Finally, let&#8217;s take a look at the <strong>Web part XML file</strong> (in the example I used above, the filename is HelloPart.xml). The Web part XML file contains the following:</p>
<pre class="brush: xml;">

&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;

&lt;Elements Id=&quot;247ef4d4-489d-46d1-a628-8d8daa6267a3&quot; xmlns=&quot;http://schemas.microsoft.com/sharepoint/&quot; &gt;

  &lt;Module Name=&quot;WebParts&quot; List=&quot;113&quot; Url=&quot;_catalogs/wp&quot;&gt;

    &lt;File Path=&quot;HelloPart.webpart&quot; Url=&quot;HelloPart.webpart&quot; Type=&quot;GhostableInLibrary&quot; /&gt;

  &lt;/Module&gt;

&lt;/Elements&gt;
</pre>
<p>See how the <em>File</em> element doesn&#8217;t have any children? We can put a <em>Property</em> element as a child of the <em>File</em> element. This <em>Property</em> element will contain the &#8220;<strong><em>Group</em></strong>&#8221; the Web part appears in the catalog. By default, like the in the Web part XML file example above, the Group is not specified and therefore, the Web part gets listed under <em>Miscellaneous Group</em> in the Web Part catalog. If you want the Web part to appear in a group other than <em>Miscellaneous</em>, transform the Web part XML file from the above example to the following:</p>
<pre class="brush: xml;">

&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;

&lt;Elements Id=&quot;247ef4d4-489d-46d1-a628-8d8daa6267a3&quot; xmlns=&quot;http://schemas.microsoft.com/sharepoint/&quot; &gt;

  &lt;Module Name=&quot;WebParts&quot; List=&quot;113&quot; Url=&quot;_catalogs/wp&quot;&gt;

        &lt;File Path=&quot;HelloPart.webpart&quot; Url=&quot;HelloPart.webpart&quot; Type=&quot;GhostableInLibrary&quot;&gt;

              &lt;Property Name=&quot;Group&quot; Value=&quot;My Stuff&quot;/&gt;

        &lt;/File&gt;

  &lt;/Module&gt;

&lt;/Elements&gt;
</pre>
<p>We added the <em>Property</em> element below the <em>File </em>element. The <em>Name </em>attribute of the <em>Property</em> element should have a value of &#8220;<strong><em>Group</em></strong>&#8221; and the <em>Value</em> attribute is the group name you want the Web part to appear in the catalog. In the example above, after the Web part gets deployed, the Web part appears in a category called &#8220;<em>My Stuff</em>&#8220;:</p>
<div id="attachment_168" class="wp-caption aligncenter" style="width: 512px"><img class="size-full wp-image-168 " title="Web Part appearing on specified Group" src="http://spdeveloper.net/wp-content/uploads/2009/12/web-part-grouped.png" alt="Web Part appearing on specified Group" width="502" height="502" /><p class="wp-caption-text">Web Part appearing on specified Group</p></div>
]]></content:encoded>
			<wfw:commentRss>http://spdeveloper.net/2009/12/editing-wsp-file-using-vsewss-1-3-in-visual-studio-2008/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

