实际上,根据 CRM 2011 SDK 文档,作为托管解决方案一部分的站点地图修改应该在托管解决方案被删除时自动从系统中删除。引用自 SDK 文档:
将解决方案打包为托管解决方案时,会将 SiteMap XML 与原始 SiteMap XML 以及对 SiteMap 进行的任何其他自定义进行比较。只有差异包含在托管解决方案中。这些差异包括已更改、移动、添加或删除的项目...。稍后,如果卸载托管解决方案,将引用随托管解决方案导入的 SiteMap XML 以删除随该托管解决方案引入的更改。然后计算一个新的活动站点地图。
例如,仅包含添加组的解决方案的自定义 .xml 将包含类似于以下内容的 XML:
<Group Id="TestGroup" IsProfile="0" ordinalvalue="6" solutionaction="Added">
<Titles>
<Title Title="Examplegroup" LCID="1033" />
</Titles>
<SubArea Id="new_webresource" PassParams="1" Url="$webresource:new_webresource" ordinalvalue="0">
<Titles>
<Title LCID="1033" Title="Example" />
</Titles>
</SubArea>
</Group>
该solutionaction
属性指示系统在删除托管解决方案时从完整的自定义文件中删除 XML 片段。简而言之,它应该按照您希望的方式运行...
当然,以上仅适用于托管解决方案。
这对您不起作用似乎表明您系统的customization.xml 已以某种方式损坏。我建议导出站点地图,删除对错误元素的任何引用,然后重新导入。
还应该注意的是,您通常需要在向站点地图发布更新后对 Web 浏览器进行硬刷新,以便删除的导航元素消失。否则很容易遇到与您描述的问题类似的问题。