Erreur survenue dans l'étape de déploiement 'Activer les fonctionnalités': Référence d'objet non définie sur une instance d'un objet: Erreur du récepteur de fonctionnalité

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/109937

Question

I Crélevé d'une partie Web visuelle dans SP 2013. Il a besoin d'une liste SharePoint.Ainsi écrit ci-dessous le code dans le récepteur de fonctions Web. Lorsque je déploierai la solution, une erreur indique que l'erreur est survenue dans l'étape de déploiement "Activer les fonctionnalités": référence d'objet non définie sur une instance d'un objet.J'ai défini activatedefault="False" et toujoursforceInstall="vrai". Jetez un coup d'œil sur mon fichier manifeste de mon fonctionnalité.

<Feature xmlns="http://schemas.microsoft.com/sharepoint/" Title="SharePointProject1 Feature1" ActivateOnDefault="FALSE" AlwaysForceInstall="TRUE" Id="8f7163d5-6c65-40d8-9045-8f74192f07d7" ReceiverAssembly="SharePointProject1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9c2f0c3a8e22f6a0" ReceiverClass="SharePointProject1.Features.Feature1.Feature1EventReceiver" Scope="Site">
  <ElementManifests>
    <ElementManifest Location="VisualWebPart1\Elements.xml" />
    <ElementFile Location="VisualWebPart1\VisualWebPart1.webpart" />
  </ElementManifests>
</Feature>

Ceci est mon code 1Eventreceiver.

SPWeb spWeb = properties.Feature.Parent as SPWeb;
            SPList laptopList = spWeb.Lists["Laptops"];
            if (laptopList != null)
            {
                laptopList.Delete();

            }
            SPListCollection lists = spWeb.Lists;
            lists.Add("Laptops", "The Laptops", SPListTemplateType.GenericList);
            laptopList = spWeb.Lists["Laptops"];


            laptopList.Fields.Add("Name", SPFieldType.Text, true);
            laptopList.Fields.Add("Model", SPFieldType.Text, true);
            laptopList.Fields.Add("Image", SPFieldType.URL, false);

Je peux déployer si je n'ai que le code ci-dessous

 SPWeb spWeb = properties.Feature.Parent as SPWeb;

Était-ce utile?

La solution

La partie Web visuelle doit être incluse sur la fonctionnalité Site-Storesd, en conséquence.freature.parent est un objet SPSITE.Vous devez vérifier la portée de la fonction et utiliser le code ci-dessous si la portée est le site.

SPSite site = properties.Feature.Parent as SPSite;
if (site != null){
    SPWeb web = site.RootWeb;
    SPList laptopList = web.Lists["Laptops"];
    ...
}

Autres conseils

web.lists [] provoquera une exception si la liste n'est pas là.

Utilisez trygetlist à la place

a travaillé pour moi après A changé le niveau d'étendue de la fonctionnalité de SITE à Web

 Entrez la description de l'image ici

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top