2012-10-11 13 views
5

Próbuję uzyskać listę funkcji farmy z witryny centralnego administratora SharePoint 2010. Problem, który mam, polega na tym, że udało mi się tylko odciągnąć funkcje: Strona. Poniższy kod jest co Ja obecnie pracuje z:Uzyskaj cechy farmy z 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); 
    } 

} 

Próbowałem również używając SPFarm.Local.FeatureDefinitions następująco:

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

ale bezskutecznie. Następna droga, którą się zbliżam, używa SPFeatureCollection. Czy istnieje lepsze podejście do tego problemu? Zasadniczo szukam tylko wskazówek, ponieważ jeszcze nie uzyskałem niczego z SPFeatureCollection.

EDIT I zostały aprowizacji z

SPFeatureCollection featureCollect = SPContext.Current.Site.Features 

ale do tej pory mam problem z SPContext powrocie zerowy.

+1

Zmieniłem twój tytuł. Zobacz, "[Czy w tytułach pytania powinny znaleźć się" znaczniki "?] (Http://meta.stackexchange.com/questions/19190/)", gdzie konsensus brzmi "nie, nie powinien". –

+0

Przepraszam, sformułowałem, jak generalnie zaczynam zapytania Google. Niezamierzone naruszenie – wjhguitarman

+0

Nie jest problemem. [so] umieszcza dla ciebie pierwszy tag. –

Odpowiedz

2

myślę, że jesteś na dobrej drodze z drugiego przykładu. Brakująca część sprawdza zakres funkcji. SPFarm.Local.FeatureDefinitions przywraca kolekcję wszystkich funkcji zdefiniowanych w farmie (zbiór obiektów SPFeatureDefinition). Stamtąd możesz sprawdzić właściwość Zakres obiektu SPFeatureDefinition, aby zawęzić go do tylko funkcji zakresu farmy.

przykład:

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

dodatkowe odniesienia MSDN here dla dostępnych właściwości obiektu SPFeatureDefinition.

+0

Ach tak, zupełnie zapomniałem zaglądać w ustawienia zakresu. Dzięki za sugestię/przykłady. Zacznę grać z tym! – wjhguitarman

+1

Zasłony były rzeczywiście odpowiedzią! Nie podobało mu się 'features.Scope =" Farm "', ale deklarowanie zakresu przed operacją if, a następnie porównywanie: 'features.Scope.Equals (scopeSelect)' działało. Dziękuję za pomoc. – wjhguitarman

+1

Przepraszamy za błąd składniowy z mojej strony. Użyłem skryptu PowerShell przy podwójnym sprawdzaniu. Ten skrypt wyglądał następująco: $ farm = get-spfarm; foreach ($ cecha w $ farm.FeatureDefinitions) {if ($ feature.Scope -eq "Farm") { zapisu hosta $ feature.name $ feature.FeatureDefinitionScope } } Cieszę się, że pracował dla ciebie choć ! – Rob