J'ai essayé toutes les recommandations sur le Web, en vain.
J'ai écrit une application console en suivant les instructions suivantes: http://msdn.Microsoft.com/en-us/library/Microsoft.sharepoint.spcontenttypecollection.delete.aspx
"Usages.Count" est = 0. Cependant, lorsqu'il essaie de supprimer le type de contenu, une exception se produit:
"Le type de contenu est en cours d'utilisation."
Ceci est une toute nouvelle installation (de développement). J'ai créé un site de test dans SP Designer, créé un type de contenu, puis une liste. Ensuite, j'ai supprimé la liste, l'ai retirée de la corbeille et j'ai essayé de supprimer le type de contenu ...... Ugh.
J'ai été frustré par ce problème jusqu'à ce que je trouve votre commentaire. Excellent conseil.
C'est beaucoup de recyclage! Une fois terminé, j'ai pu supprimer le type de contenu.
En plus des bacs de recyclage, vous trouverez également la page "Gérer les fichiers sans version archivée" sous "Autorisations et gestion" dans les bibliothèques de documents - les fichiers qu’ils contiennent peuvent également empêcher la suppression d’un type de contenu.
ce script powershell forme ce post a également travaillé pour moi
$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()
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();
}
}
}
Créez une application console avec le code ci-dessus et exécutez ce projet. Ce code vous indiquera les bibliothèques dans lesquelles les types de contenu sont attachés. Ensuite, allez simplement dans ces bibliothèques et supprimez les types de contenu attachés. Enfin, supprimez finalement le type de contenu de Actions du site -> Paramètres du site -> Types de contenu de site ou utilisez le code ci-dessus pour supprimer le type de contenu.
Cela a fonctionné pour moi, j'espère que cela fonctionnera aussi pour vous !!! Merci.