5

SharePoint2010サーバーの全体管理サイトからファーム機能のリストを取得しようとしています。私が抱えている問題は、サイト機能のプルバックにしか成功していないということです。次のコードは、私が現在使用しているものです。

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

2番目の例ではあなたは正しい方向に進んでいると思います。欠落している部分は、機能スコープをチェックすることです。SPFarm.Local.FeatureDefinitionsは、ファームで定義されているすべての機能のコレクション(SPFeatureDefinitionオブジェクトのコレクション)を戻します。そこから、SPFeatureDefinitionオブジェクトのScopeプロパティを確認して、Farmスコープの機能のみに絞り込むことができます。

例:

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 に答える