Error occurred in deployment step Activate Features: This functionality is unavailable for field collections not associated with a list.
Thu, Aug 30, 2012
One-minute read
This follows on from some of my other posts about deploying fields and content types programmatically. In this case, I was simply trying to add a choice field (SPFieldChoice) to a site, and then add it to some content types.
So I had something like:
var myCt = // snip - code to get my existing content type; // create the choice column var fieldChoices = new StringCollection() { "choice1", "choice2", "choice3" }; var docSourceField = web.Fields.Add("MyChoiceColumn", SPFieldType.Choice, false, false, fieldChoices); // get the column we just created SPFieldChoice docSourceChoiceField = (SPFieldChoice)web.Fields[DocumentSourceColumnName]; if (null == docSourceChoiceField) { throw new Exception("Error: Couldn't get the docSourceChoiceField."); } // add the new field to my content type myCt.Fields.Add(docSourceChoiceField); myCt.Update(true);
However, running this fell over with the error:
Error occurred in deployment step ‘Activate Features’: This functionality is unavailable for field collections not associated with a list.
I naturally assumed this was due to an issue with creating the field. It actually wasn’t though - it was adding the new column to my content type.
The code to add the column to the content type is actually:
SPFieldLink fldLink = new SPFieldLink(docSourceChoiceField); myCt.FieldLinks.Add(fldLink); myCt.Update();
This will add your site column to your content type.