I recently was looking into programmatically setting up navigation in publishing sites and came across a scenario I felt I should share with the community so everyone is aware of it, and to see if there is any help with a workaround.
The scenario is that when a normal team site is created it uses the basic WSS navigation structure. This structure can be accessed from the SPWeb.Navigation class. In the site collection where the Team site is located, an administrator can activate the MOSS Publishing Infrastructure under the site collection features area, which will change the Team site navigation to the publishing navigation structure. This is not a big deal since it allows you to have more control over your navigation without all the publishing aspects being turned on within the Team site.
The problem occurs when trying to access this navigation programmatically. You see from the browser that the navigation is using the publishing structure, but you don't have access to the navigation programmatically using the PublishingWeb.Navigation class since the "Web" is not a "PublishingWeb". To make the web a publishingweb you need to activate the publishing feature at the web scope. The catch-22 occurs when you don't want the Team site to have publishing turned on at the web scope, but the publishing infrastructure is turned on at the site scope.
I haven't found a way to manipulate the publishing navigation pieces without having the publishing feature activates at the web scope. If anyone has any tips that would be very much appreciated, but for now the work around is to either configure it manually, or activate the publishing feature at the web scope.