Sometimes I wonder how different people get the same results with no communication between them. History has many examples: calculus, radio, ...so seems it is the other way round: we usually work at the same time trying to solved the same problems.
Working on my Search Extensions project, I saw that I should include a breadcrumb to my custom application pages, in order to optimize the navigation. As application.master includes a SPXmlContentMapProvider for those breadcrumb, I searched it in the web.config.
<asp:SiteMapPath SiteMapProvider="SPXmlContentMapProvider" id="ContentMap" SkipLinkText="" NodeStyle-CssClass="ms-sitemapdirectional" runat="server"/>
If you look there, you will find it (and many others):
<siteMap defaultProvider="CurrentNavSiteMapProvider" enabled="true">
<add name="SPXmlContentMapProvider" siteMapFile="_app_bin/layouts.sitemap" type="Microsoft.SharePoint.Navigation.SPXmlContentMapProvider, Microsoft.SharePoint, Version=220.127.116.11, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />
As you can see it is loading the XML from _app_bin folder. This is created when the webapplication is provisioned. So, after my CSSAdapter problem, I expected those files to be at
%programfiles%\Common Files\Microsoft Shared\web server extensions\12\CONFIG
As webconfig, browsers,commands and resources provisioning; sitemaps are no different. So if you add a new file named layouts.<whatever>.sitemap it will be included in any new web application.
For created web applications, there is a stsadm command that do the trick: stsadm -o copyappbincontent
It is interesting that Jan Tielens blogged about it just 2 weeks ago!!
By the way, I didn't want to compare calculus and sharepoint 🙂 and if you follow the links in common