2011-06-21 24 views
36

私はウェブ上のすべての推奨事項を試してみましたが、無駄です。SharePoint 2010 ContentType「コンテンツタイプが使用中です」を削除できません。

私は、これらの指示に従ってコンソールアプリケーションを書いた:http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spcontenttypecollection.delete.aspx

「Usages.Countは」それでも= 0である、それはコンテンツタイプを削除しようとしたとき、私は例外を取得:

「コンテンツをタイプが使用中です。

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

+5

問題が見つかりました。私は「2つの」ごみ箱について読むことを続けました。私はサイトと "サイトコレクション"のごみ箱をチェックし続けました。私は、親サイト "Recycle BIN"の上部にある "リンク"を "Site Collection Recycle Bin"と表示していませんでした。そのオプションをクリックして(そして「エンドユーザーのごみ箱から削除する」を選択した後)、コンテンツタイプを削除することができました。 – Shayne

答えて

70

あなたのコメントが見つかるまで、私はこの問題に苛立っていました。優れたアドバイス。

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

リサイクルは大変です!完了したら、私はコンテンツの種類を削除することができました。

+6

私は6時間以上の欲求不満のためにありがとう。 – skaz

+1

これは答えとしてマークする必要があります! – Nils

+0

この解決策は私のために働いた。私はしばらく時間を節約しました。ありがとう。 – Ken

0


    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

上記の(C#)コードは、OPに記載した(およびURLを含む)単なる "コピー/ペースト"です。:) – Shayne

5

この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() 
+1

これは、すべてのレベルですべてのごみ箱からそれが空になったのを見ても削除されないサイトコンテンツタイプを持っていたときに私にとって役に立ちました。 –

+0

これは私のために、すべてのごみ箱を削除した後、私はまだUIからそれを削除できませんでした –

+1

いいえ、私はいくつかのサブサイトで使用中のCTを忘れていたとコードはそれを私に特定した。ちょっと追加するだけです:for-eachの中のメッセージは、$ ctuse.Urlを$()で囲んで、CTが使用されているURLを表示します: '$($ ctuse.Url) '​​ – GBU

6

を働いていたこのPowerShellスクリプトフォームは、ライブラリ - そこにあるファイルは、コンテンツタイプの削除を防ぐこともできます。

+0

これは私を助けました! –

関連する問題