0

je le code d'activation suivant:« activer les fonctions »: objet de référence non définie à une instance d'un objet

public override void FeatureActivated(SPFeatureReceiverProperties properties) 
    { 
     // Create a new list and populate it. 
     using (SPWeb web = properties.Feature.Parent as SPWeb) 
     { 
      web.Lists.Add("Projects", "Projects That are currently being worked on.", SPListTemplateType.GenericList); 
      web.Update(); 

      // Add the new list and the new content. 
      SPList projectList = web.Lists["Projects"]; 
      projectList.Fields.Add("Name", SPFieldType.Text, false); 
      projectList.Fields.Add("Description", SPFieldType.Text, false); 
      projectList.Update(); 

      //Create the view? - Possibly remove me. 
      System.Collections.Specialized.StringCollection stringCollection = 
       new System.Collections.Specialized.StringCollection(); 
      stringCollection.Add("Name"); 
      stringCollection.Add("Description"); 

      //Add the list. 
      projectList.Views.Add("Project Summary", stringCollection, @"", 100, 
       true, true, Microsoft.SharePoint.SPViewCollection.SPViewType.Html, false); 
      projectList.Update(); 
     } 
    } 

Ce qui devrait passer et ajouter une nouvelle liste appelée projet et sa vue associée. Comment jamais lors de l'exécution de l'application que je reçois:

« Activer Caractéristiques »: objet de référence non définie à une instance d'un objet

Mes questions sont les suivantes:

  • Pourquoi cette événement? L'activation se produit au niveau du site. et je suis le admin du site "développement".
  • Dois-je vérifier à chaque fois pour m'assurer que cette liste n'existe pas déjà? (Chaque fois, se référant à chaque fois que je frappe Deploy)
+0

Quelle ligne lève l'exception? Cela devrait être absolument la première chose que vous regardez, et cela devrait être inclus dans la question. –

+0

Il ne dit pas réellement quelle ligne, It sais Line 0, Collumn 0, CustomerCommunicationProject. @jonSkeet – TheWebs

+0

Vous n'avez pas de trace de pile complète? Ick. Pouvez-vous parcourir le code dans un débogueur? (Si vous utilisez actuellement la version Release, essayez la version Debug à la place, ce qui vous donnera peut-être plus d'informations.) –

Répondre

1

Je vais supposer que vous avez une fonction scope du site et que votre NullReferenceException est causé par vous essayant de jeter properties.Feature.Parent as SPWeb.

Si ma supposition concernant la fonctionnalité du site est correcte, vous ne pouvez pas accéder à SPWeb comme vous le souhaitez. Essayez ceci à la place:

public override void FeatureActivated(SPFeatureReceiverProperties properties) 
{ 
    SPSite siteCollection = properties.Feature.Parent as SPSite; 
    if (siteCollection != null) 
    { 
     SPWeb web = siteCollection.RootWeb; 
     // Rest of your code here. 
    } 
} 
+0

Est-ce que je continuerais avec mon instruction using? Je ne suis pas sûr si cela change ou pas. – TheWebs

+0

@TheWebs - non vous n'avez pas besoin de disposer de la racine web, il suffit de disposer du site (je pense). – RobH

Questions connexes