升级自定义网站定义

上次修改时间: 2010年4月6日

适用范围: SharePoint Foundation 2010

本文内容
更新 ASPX 页
编辑 Onet.xml
最后的注意事项

在以前版本的 SharePoint Foundation 中,许多类型的自定义设置均要求对网站定义进行自定义,这通常涉及复制 STS 网站定义和修改复制的定义中的列表架构、页面和其他结构元素。自定义网站定义的大部分内容是未自定义的,这表示它们会将许多相同的基本特征作为 STS 网站定义加以保留。

获取以前版本的自定义网站定义的当前等效项所使用的方法是不同的,具体取决于网站定义和您进行的自定义的类型。如果未着重自定义与所基于的网站定义相关的网站定义,则最佳选择可能是创建该网站定义的当前等效项,并改进新定义以包括以前的自定义项。例如,如果针对以前版本的网站定义的自定义仅仅是使用功能添加自定义列表,或自定义 Default.aspx 页以获取自定义外观,则应将当前版本的网站定义用作新的自定义网站定义的基础并升级功能(请参阅升级功能)。但是,如果自定义的范围更加广泛,则最好将以前的网站定义转换为当前网站定义的等效项。本主题的其余部分提供有关如何将以前版本的自定义网站定义转换为当前版本的适当网站定义的指南。

更新 ASPX 页

当承载基于以前版本的网站定义的网站时,SharePoint Foundation 会在兼容模式下执行页面以确保这些页面在部署中起作用。但在运行基于当前版本的网站定义的页面时,由于性能方面的原因,SharePoint Foundation 不会在兼容模式下运行这些页面。因此,在创建 SharePoint Foundation 网站定义时,必须在某种程度上修改 Microsoft ASP.NET 页。

如果没有在以前版本的网站定义中自定义 ASPX 页,则最好复制当前版本的网站定义的 Default.aspx 页。例如,如果网站基于自定义网站定义,而后者最初基于 STS 网站定义,则此页面将位于 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\SiteTemplates\sts\xml 文件夹中。

所有 Web 部件页必须包含 ASP.NET Web 部件管理器才能正常运行。因此,如果已自定义 ASPX 页,则必须向这些页中添加 Web 部件管理器,可以通过在这些页面中插入 <WebPartPages:SPWebPartManager id="m" runat="Server" /> 来执行此操作。

备注

由于所有 SharePoint 母版页都包含 Web 部件管理器,因此最佳做法是采用基于母版页上的 ASP.NET 页的额外步骤。通过使用基于母版页的基础结构,可获得更大的灵活性,并且母版页有助于确保在页中包含 SharePoint Foundation 功能的共同部分。有关详细信息,请参阅母版页

编辑 Onet.xml

Onet.xml 文件的结构已发生根本改变。如果未在以前版本的自定义网站义中自定义 Onet.xml,则最好将当前版本的 Onet.xml 文件从 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\SiteTemplates\sts\xml 文件夹复制到您的网站定义中。

在 SharePoint Foundation 中,安装目录中的所有 XML 文件均使用资源表达式 ($Resources),以便用于其语言包已安装的任何语言。若要使以前版本的网站定义能够用于多种语言,并从这种针对资源的扩展用法中受益,则必须在以前版本的 XML 文件中进行大量更改。在此情况下,最好复制当前版本的网站定义并向其中添加自定义项。

如果已在以前版本的网站定义中自定义 Onet.xml 文件,则必须修改该文件以使其能够用于当前版本。下列基本步骤有助于使以前的 Onet.xml 文件与当前网站定义更加一致。

  1. 若要确保通过定义创建的网站始终使用最新的 SharePoint Foundation 基列表类型,则可能需要从 Onet.xml 文件中删除 <BaseTypes> 部分。基列表类型默认情况下包含在 SharePoint Foundation 网站中,并且无需在您的文件中定义这些类型。

  2. 从以前版本的 Onet.xml 文件中删除标准列表(如果存在)。默认情况下,SharePoint 功能所需的许多列表现已包含在 SharePoint Foundation 中,并且无需在 Onet.xml 文件中定义它们。有关详细信息,请参阅升级标准列表定义

  3. 删除列表的 <ListTemplate> 标记(如果存在),其中 Name 属性等同于 webtemp、listtemp、wplib 或 datasrcs。同样,通过删除 LISTS\WEBTEMP、LISTS\LISTTEMP、LISTS\wplib 和 LISTS\DATASRCs 文件夹来删除这些列表的基础列表定义(如果存在)。从 <Configurations> 部分中删除每个 <List> 标记,其中 Type 属性等于 113(Web 模板库)、114(列表模板库)或 111(Web 部件库)。

  4. 考虑将 <DocumentTemplates> 部分映射到当前文档模板。网站定义中表示文档模板的系统在各版本之间没有发生明显改变,并且文档模板仍存储在每个区域设置目录中。

对于特定的网站定义,必须确保在 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\<区域设置 ID>\<网站定义名称> 目录中具有对应的文档模板文件集。但是,如果未自定义文档模板文件,则可以让网站定义重用文档模板。为此,将为 Onet.xml 文件中的每个 <DocumentTemplate> 节点添加注释以指定 Path="STS"。

最后的注意事项

自定义网站定义后,在 SharePoint Foundation 2010 中测试该自定义以确保通过定义创建的新网站能够正常工作。创建适当的 SharePoint Foundation 网站定义后,接下来可创建升级定义以将该网站定义从以前版本映射到当前版本。

请参阅

概念

升级标准列表定义

其他资源

升级 SharePoint Foundation