2012-10-11 20 views
5

SharePoint 2010 Central Admin sitesinden Çiftlik Özellikleri'nin bir listesini almaya çalışıyorum. Sorun şu ki, yalnızca Site Özelliklerini geri çekmeyi başardım. Ben de şöyle SPFarm.Local.FeatureDefinitions kullanılarak denediSharePoint 2010'dan Grup Özellikleri Al

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

ama boşuna Aşağıdaki kod Şu anda ile çalışıyorum budur. Yaklaşmakta olduğum bir sonraki adres SPFeatureCollection kullanıyor. Bu konuda alabileceğim daha iyi bir yaklaşım var mı? Temelde sadece bazı ipuçlarını arıyorum sadece henüz SPFeatureCollection dışında bir şey almamış.

DÜZENLEME Ben

SPFeatureCollection featureCollect = SPContext.Current.Site.Features 

ile karıştırmasını edilmiş ama şu ana kadar SPContext boş dönen bir sorun yaşıyorum.

+1

Başlığınızı düzenledim. Lütfen, "[Sorular soruların başlığında" etiketler içeriyor mu? "(Http://meta.stackexchange.com/questions/19190/)" bölümüne bakacak olursak, fikir birliği "hayır, yapmamalı" dır. –

+0

Maalesef, Google sorgularını genellikle nasıl başlattığımı ifade ettim. Kasıtsız ihlali – wjhguitarman

+0

Sorun değil. [böylece] ilk etiketi sizin için başlığa koyar. –

cevap

2

Sanırım ikinci örnekle doğru yoldasınız. Eksik olan bölüm, özellik kapsamını kontrol etmektir. SPFarm.Local.FeatureDefinitions, grupta tanımlanan tüm özelliklerin bir koleksiyonunu (SPFeatureDefinition nesneleri topluluğu) geri getiriyor. Buradan, SPFeatureDefinition nesnesinin Kapsam özelliğini, yalnızca Çiftlik kapsamı özelliklerine göre daraltmak için kontrol edebilirsiniz.

Örnek: SPFeatureDefinition nesnesinin uygun özellikleri

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

ek MSDN referans here.

+0

Ah evet, Kapsam ayarlarına bakmayı tamamen unuttum. Öneri/örnekler için teşekkürler. Bununla oynamaya başlayacağım! – wjhguitarman

+1

Kapsamlar gerçekten cevaptı! Features.Scope = "Farm" 'den hoşlanmıyordu ama önce bir kapsam belirttikten sonra karşılaştırarak karşılaştı:' features.Scope.Equals (scopeSelect) 'hile yaptı. Yardımın için teşekkürler. – wjhguitarman

+1

Benim bölümümdeki sözdizimi hatası için özür dilerim. Kontrol ederken bir PowerShell betiği kullandım. Bu betik şöyle görünüyordu: $ farm = get-spfarm; Sevindim olsa sizin için çalıştığı {($ feature.Scope -eq "Çiftliği") { yazmaya karşı konak $ feature.name $ feature.FeatureDefinitionScope } eğer } foreach ($ farm.FeatureDefinitions içinde $ özelliği) ! – Rob