5

我正在尝试从 SharePoint 2010 Central Admin 站点获取农场功能列表。我遇到的问题是我只成功撤回了站点功能。以下代码是我目前正在使用的代码:

foreach (SPFeature feature in SPAdministrationWebApplication.Local.Features)
{
    string featureName = feature.Definition.DisplayName;
    if (featureName != null)
    {
        XElement newItem = new XElement("Item", featureName);
        infoTree.Add(newItem);
    }

}

我也尝试SPFarm.Local.FeatureDefinitions 过如下使用:

foreach (SPFeatureDefinition feature in SPFarm.Local.FeatureDefinitions)
{
    string featureName = feature.DisplayName;
if (featureName != null)
    {
        XElement newItem = new XElement("Item", featureName);
        infoTree.Add(newItem);
    }

但无济于事。我正在接近的下一个途径是使用SPFeatureCollection. 有没有更好的方法可以解决这个问题?基本上我只是在寻找一些线索,因为我还没有得到任何东西SPFeatureCollection

编辑 我一直在玩弄

SPFeatureCollection featureCollect = SPContext.Current.Site.Features  

但到目前为止,我遇到了SPContext返回 null 的问题。

4

1 回答 1

2

我认为您在第二个示例中走在正确的轨道上。您缺少的部分是检查功能范围。SPFarm.Local.FeatureDefinitions 将带回农场中定义的所有特征的集合(SPFeatureDefinition 对象的集合)。从那里,您可以检查 SPFeatureDefinition 对象的 Scope 属性,以将其缩小到仅农场范围的功能。

例子:

foreach (SPFeatureDefinition feature in SPFarm.Local.FeatureDefinitions)
{
    if (feature.Scope = "Farm")
    {
        string featureName = feature.DisplayName;
        if (featureName != null)
        {
            XElement newItem = new XElement("Item", featureName);
            infoTree.Add(newItem);
        }
    }

有关 SPFeatureDefinition 对象的可用属性的其他 MSDN 参考。

于 2012-10-12T03:39:47.160 回答