2012-10-11 7 views
5

SharePoint 2010 Central Adminサイトからファーム機能の一覧を取得しようとしています。私が抱えている問題は、私だけが引き戻すのに成功したということです。サイトの機能。私も次のようにSPFarm.Local.FeatureDefinitionsを使用してみましたがSharePoint 2010のファーム機能を入手

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

} 

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のうち何も得ていないので、いくつかの手がかりを探しています。

EDIT 私は

SPFeatureCollection featureCollect = SPContext.Current.Site.Features 

をいじりされているが、これまでのところ、私はSPContextがnullを返すと、問題が生じています。

+1

タイトルを編集しました。 「[質問には「タイトル内に「タグ」を含める必要がありますか」(http://meta.stackexchange.com/questions/19190/)」を参照してください。コンセンサスは「いいえ、そうすべきではありません」です。 –

+0

申し訳ありませんが、私は一般的にどのようにGoogleクエリを開始するのかと言いました。意図しない違反 – wjhguitarman

+0

問題ありません。 [so]はあなたのためのタイトルに最初のタグを置きます。 –

答えて

2

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

例:SPFeatureDefinitionオブジェクトの利用可能なプロパティの

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); 
     } 
    } 

追加MSDN参照here

+0

ああ、私はスコープの設定を調べることを完全に忘れてしまった。提案/例をありがとう。私はこれで遊ぶようになります! – wjhguitarman

+1

スコープは確かに答えでした! 'features.Scope =" Farm "が好きではなかったが、ifの前にスコープを宣言して比較した。' features.Scope.Equals(scopeSelect) 'はそのトリックを行った。ご協力ありがとうございました。 – wjhguitarman

+1

私の部分の構文エラーについては申し訳ありません。私はPowerShellスクリプトを使ってそれを二重チェックしていました。そのスクリプトは次のようになります。$ farm = get-spfarm; foreachの($ farm.FeatureDefinitionsで$機能){ ($ feature.Scope -eq "ファーム")であれば{ 書き込みホスト$ feature.name $ feature.FeatureDefinitionScope }} あなたのために働いていることがうれしいけれども! – Rob

関連する問題