Тип контента для SharePoint 2010 был создан с помощью фичи (возможности). В нее входили столбцы сайта, типы контента и список, использующий несколько типов контента. В один момент при добавлении из Visual Studio нового поля в типы контента в журнале заметил, что VS не может обновить типы контента. Попытка удалить через веб-интерфейс привела к ошибке.
Дальше начался траблшутинг:
- Попробовал удалить типы контента. Зашел в раздел "Параметры сайта / Типы контента сайта", выбрал нужный тип, удалить. Ошибка " Тип контента "Квартира" является частью компонента приложения"
- Удалил сайт, на котором были список и фичи и создал новый сайт с таким же именем. Типы контента остались на месте, удаление закончилось ошибкой как и в п.1.
- Попробовал удалить через консоль SharePoint.
$web = Get-SPWeb http://spdev/fss $cons = $web.ContentTypes $cons[2].Delete()
В результате снова ошибка:
Microsoft.SharePoint.SPException: Тип контента "Квартира" является частью компонента приложения.
at Microsoft.SharePoint.SPContentTypeCollection.DeleteFromWeb(SPContentTypeId id, String strName)
at Microsoft.SharePoint.SPContentTypeCollection.Delete(SPContentTypeId id)
at Microsoft.SharePoint.SPContentType.Delete()
at Microsoft.SharePoint.ApplicationPages.ManageContentTypePage.DeleteContentType()
at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
Удалению типа контента мешало то, что существовал список, использующий тот самый тип, который я хотел удалить. Тип контента был опубликован на уровне SPWeb. При удалении SPWeb вместе с содержимым перемещается в корзину. Не удаляет, а перемещает! Поэтому для исправления ошибки нужно просто зайти в корзину и удалить из нее сайт. Можно вообще просто очистить корзину.