Cannot enable feature with feature receiver via PowerShell

10k views Asked by At

I've got a problem where I can enable a feature the UI and everything works as expected through site settings, but if I try and enable the feature via the Sharepoint powershell (which we are doing as part of a scripted deployment), I get the following:

Enable-SPFeature : Failed to create receiver object from assembly "xxxxx, Version=1.0.0.0, Culture=neutral, PublicKeyToken=967e6960f5af91e6 ", class "xxxxx.EventReceiver" for feature "xxxxx.Public.Search" (ID: 026d7c45-a359-4550-822d-1a6c35e58e0 d).: System.ArgumentNullException: Value cannot be null. Parameter name: type

Does anyone know why this would occur, or some things I should check? The feature definition is definitely correct (since deploying it through the UI works as expected, and I've also double checked the PublicKeyToken is correct etc etc), and restarting the services and iisreset doesn't enable me to use Enable-SPFeature either.

5

There are 5 answers

1
Evert On BEST ANSWER

I have the same issue. The curious thing is when you open up a new SP2010 powershell window and reissue the same command the assembly is found without any problems. See: http://khurramdotnet.blogspot.com/2011/01/enable-spfeature-command-throwing.html

1
user3234546 On

Try this: http://geoffwebbercross.blogspot.ca/2011/06/failed-to-create-receiver-object-from.html It worked for me, I did not have to change a stitch in my code / solution

1
Mauro On

I had this yesterday, turns out the feature name and the feature receiver name werent matching. To resolve it I copied the FeatureActivated code into notepad (entire code block) or whichever events it is you have coded.

  1. Copy the entire event code that you have written I.e. the FeatureActivated method (including signature)
  2. Remove the EventReceiver from your project.
  3. Add a new event received to your project (you can double check the name for changes)
  4. Paste the Event code back into the event receiver.

I use the following code to deploy using powershell

    if(($Solution -ne $null) -and ($Solution.ContainsWebApplicationResource))
    {
        if ($FeatureScope -eq "Web")
        {
            Install-SPSolution $SolutionName -url $siteUrl -GACDeployment -Confirm:$false
        }
        else
        {
            Install-SPSolution $SolutionName -AllWebApplications -GACDeployment -Confirm:$false
        }
    }
    else
    {
        Install-SPSolution $SolutionName -GACDeployment -Confirm:$false
    }
    while($Solution.Deployed-eq$false)
    {
        Start-Sleep 2
        Write-Host "." -NoNewline
    }
1
twicky87 On

Don't use the "normal" PowerShell, use the SharePoint 2010 Management Shell instead.

0
Sven On

Try this: go to the Control Panel, click on "Programs", click on "Programs and Features", select "Microsoft SharePoint Server 2010" (or whatever you have installed), click "Change", select "Repair" and click "Continue". This is what helped me.