Web上のすべての推奨事項を試しましたが、役に立ちませんでした。
これらの指示に従ってコンソールアプリケーションを作成しました。 http://msdn.Microsoft.com/en-us/library/Microsoft.sharepoint.spcontenttypecollection.delete.aspx
「Usages.Count」は0です。ただし、コンテンツタイプを削除しようとすると、例外が発生します。
「コンテンツタイプは使用中です。」
これは真新しい(開発)インストールです。 SP Designerでテストサイトを作成し、コンテンツタイプを作成してからリストを作成しました。その後、リストを削除し、ごみ箱から削除して、コンテンツタイプを削除しようとしました。 ..うーん。
あなたのコメントを見つけるまで、私はこの問題にイライラしていました。素晴らしいアドバイス。
それは多くのリサイクルです!完了すると、コンテンツタイプを削除できました。
ごみ箱に加えて、ドキュメントライブラリの[権限と管理]の下にある[チェックインされていないバージョンのファイルを管理する]というページもあります。そこにあるファイルは、コンテンツタイプの削除を防ぐこともできます。
このpowershellスクリプトはこれを形成します 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()
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();
}
}
}
上記のコードを使用してコンソールアプリケーションを作成し、そのプロジェクトを実行します。このコードは、コンテンツタイプが添付されているライブラリを示します。次に、そのライブラリに移動し、添付されたコンテンツタイプを削除します。最後に、[サイトの操作]-> [サイトの設定]-> [サイトコンテンツタイプ]からコンテンツタイプを削除します。または、上記のコードを使用してコンテンツタイプを削除することもできます。
これは私にとってはうまくいきました。ありがとう。