web-dev-qa-db-ja.com

SharePoint 2010コンテンツタイプ「使用中のコンテンツタイプ」を削除できません。

Web上のすべての推奨事項を試しましたが、役に立ちませんでした。

これらの指示に従ってコンソールアプリケーションを作成しました。 http://msdn.Microsoft.com/en-us/library/Microsoft.sharepoint.spcontenttypecollection.delete.aspx

「Usages.Count」は0です。ただし、コンテンツタイプを削除しようとすると、例外が発生します。

「コンテンツタイプは使用中です。」

これは真新しい(開発)インストールです。 SP Designerでテストサイトを作成し、コンテンツタイプを作成してからリストを作成しました。その後、リストを削除し、ごみ箱から削除して、コンテンツタイプを削除しようとしました。 ..うーん。

37
Shayne

あなたのコメントを見つけるまで、私はこの問題にイライラしていました。素晴らしいアドバイス。

  1. サイトのごみ箱から削除します。
  2. [サイトコレクション]> [サイトの設定]> [サイトコレクションの管理]> [ごみ箱]から削除します。
  3. エンドユーザーのごみ箱アイテムから削除します。
  4. 「エンドユーザーのごみ箱から削除」から削除します。

それは多くのリサイクルです!完了すると、コンテンツタイプを削除できました。

72
Erik Madsen

ごみ箱に加えて、ドキュメントライブラリの[権限と管理]の下にある[チェックインされていないバージョンのファイルを管理する]というページもあります。そこにあるファイルは、コンテンツタイプの削除を防ぐこともできます。

6
Leak

この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()
6
Mahmoud Farahat
  

    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();
          }
       }
    }

 

上記のコードを使用してコンソールアプリケーションを作成し、そのプロジェクトを実行します。このコードは、コンテンツタイプが添付されているライブラリを示します。次に、そのライブラリに移動し、添付されたコンテンツタイプを削除します。最後に、[サイトの操作]-> [サイトの設定]-> [サイトコンテンツタイプ]からコンテンツタイプを削除します。または、上記のコードを使用してコンテンツタイプを削除することもできます。

これは私にとってはうまくいきました。ありがとう。

0
Zakir HC