无法删除SharePoint 2010 ContentType“正在使用的Contentytypes”。

我已经尝试了所有在networking上的build议,无济于事。

我按照这些说明编写了一个控制台应用程序: http : //msdn.microsoft.com/en-us/library/microsoft.sharepoint.spcontenttypecollection.delete.aspx

“Usages.Count”是= 0.但是,当它试图删除内容types时,我得到一个例外:

“内容types正在使用中”。

这是一个全新的(开发)安装。 我在SP Designer中创build了一个testing网站,创build了一个内容types,然后是一个列表。 然后,我删除了列表,将其从回收站中删除,并尝试删除内容types……呃。

我感到沮丧的这个问题,直到我发现你的意见。 优秀的build议。

  1. 从网站回收站删除。
  2. 从网站collections中删除>网站设置>网站集pipe理>回收站。
  3. 从最终用户回收站项目中删除。
  4. 从“从最终用户回收站删除”中删除。

这是很多回收! 完成后,我可以删除内容types。

这个PowerShell脚本forms这个post也为我工作

$siteURL = "The Site url" $contentType = "Content type Name" $web = Get-SPWeb $siteURL $ct = $web.ContentTypes[$contentType] if ($ct) { $ctusage = [Microsoft.SharePoint.SPContentTypeUsage]::GetUsages($ct) foreach ($ctuse in $ctusage) { $list = $web.GetList($ctuse.Url) $contentTypeCollection = $list.ContentTypes; $contentTypeCollection.Delete($contentTypeCollection[$ContentType].Id); Write-host "Deleted $contentType content type from $ctuse.Url" } $ct.Delete() Write-host "Deleted $contentType from site." } else { Write-host "Nothing to delete." } $web.Dispose() 

除了回收箱之外,还有文件库中的“权限和pipe理”下的“pipe理没有检入版本的文件”页面,其中的文件也可以防止删除内容types。

 using System; using System.Collections.Generic; using Microsoft.SharePoint; namespace Test { class ConsoleApp { static void Main(string[] args) { using (SPSite siteCollection = new SPSite("http://localhost")) { using (SPWeb webSite = siteCollection.OpenWeb()) { // Get the obsolete content type. SPContentType obsolete = webSite.ContentTypes["Test"]; // We have a content type. if (obsolete != null) { IList usages = SPContentTypeUsage.GetUsages(obsolete); // It is in use. if (usages.Count > 0) { Console.WriteLine("The content type is in use in the following locations:"); foreach (SPContentTypeUsage usage in usages) Console.WriteLine(usage.Url); } // The content type is not in use. else { // Delete it. Console.WriteLine("Deleting content type {0}...", obsolete.Name); webSite.ContentTypes.Delete(obsolete.Id); } } // No content type found. else { Console.WriteLine("The content type does not exist in this site collection."); } } } Console.Write("\nPress ENTER to continue..."); Console.ReadLine(); } } } 

用上面的代码创build一个控制台应用程序并运行该项目。 这段代码会告诉你内容types被附加的库。 然后简单地去这些库并删除附加的内容types。 然后,最后从网站操作 – >网站设置 – >网站内容types中删除内容types,或者您也可以使用上面的代码来删除内容types。

这对我工作希望它可能也适合你! 谢谢。