激活依赖关系和范围

上次修改时间: 2010年3月3日

适用范围: SharePoint Foundation 2010

功能激活依赖关系表达对两个功能之间相互关系的要求。您可以针对同一个范围的功能或更大范围内的功能表达激活依赖关系。当某个特定范围内的某个功能对于其他范围内的其他功能具有依赖关系时,就存在跨范围激活依赖关系。跨范围激活依赖关系的一个示例是一个网站范围的功能依赖于一个网站集范围的功能。

通常将激活依赖关系用于两个目的:

  • 功能分组概念   当激活一个功能时,也可以激活其他功能。例如,当激活默认的"工作组协作"功能(在 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\FEATURES\TeamCollab 中)时,该功能将使用激活依赖关系来激活各种其他功能。当您激活工作组协作功能时,该功能将激活从属功能,并使指定的列表模板可供使用。当您停用该功能时,将停用从属功能(如果没有其他功能依赖于从属功能),从而使这些列表模板变得不可用。

  • 功能资源保证   您可能需要一个网站集范围的功能来包含资源(例如,内容类型)和一个网站范围的功能来包含实现。可以使用激活依赖关系以确保激活这两个功能。

激活依赖关系规则

激活依赖关系必须遵守某些规则,以避免产生循环依赖关系和依赖关系链等等,而对性能带来限制。

同一范围规则

  • 如果某个功能依赖于同一个范围内的另一个功能,并且激活第一个功能时未激活第二个功能,则 Microsoft SharePoint Foundation 将激活第二个功能。

  • 当停用某个功能时,对于同一个范围内某个隐藏的从属功能,如果对它具有激活依赖关系的最后一个可见功能被停用,则 SharePoint Foundation 将停用该隐藏功能。

跨范围规则

  • 如果所依赖的功能处于限制较严格的范围内,则不支持跨范围激活依赖关系。例如,网站集范围的功能对于网站范围的功能不会具有激活依赖关系。

  • 如果所依赖的功能不可见,则不支持跨范围的功能激活依赖关系。换句话说,网站范围的功能不可能依赖于在用户界面中不可见的网站集范围的功能。

  • 如果未激活所依赖的功能,则激活从属功能将失败。例如,如果网站范围的功能依赖于网站集范围的功能,则激活网站范围的功能(或包含网站范围的功能的网站定义)将失败。

一般规则

  • 依赖关系仅可处理一个深度级别。换句话说,不支持依赖关系链。如果最后一个功能可见(也就是说,如果一个可见功能依赖于第二个可见功能,接下来第二个可见功能依赖于第三个可见功能),则 SharePoint Foundation 不支持多层激活依赖关系。但是,如果一个可见功能依赖于第二个可见功能,而接下来第二个可见功能依赖于一个隐藏功能,则 SharePoint Foundation 的确支持多层激活依赖关系。

  • 您可以针对隐藏功能或可见功能确定激活依赖关系,但隐藏功能不能具有激活依赖关系。Feature 元素上的 Hidden 属性确定功能是否显示在用户界面中。

  • 当多个功能对某个给定功能具有依赖关系时,请记住,让其中一个从属功能处于没有所需功能依赖关系的状态会带来风险。例如,假设一个可见的网站集范围的功能(名称为功能 B)依赖于一个隐藏的网站集范围的功能(名称为功能 A),而第三个可见的网站范围的功能(名称为功能 C)也依赖于功能 A。停用功能 B 也将停用功能 A,这样,就使功能 C 处于没有所需功能依赖关系的状态。