TFSオブジェクトモデルを使用する場合、アイテムレベルのACLはVersionControlServer.SetPermissionsメソッドで設定できます。このメソッドは、PermissionChangeが継承するSecurityChangeオブジェクトの配列を取ります。PermissionChangeクラスは、許可、許可の拒否、および削除(特定の許可をリセットして未設定に戻すため)の文字列の配列を取ります。これらのアイテムレベルの権限は、VersionControlServer.GetPermissionsメソッドで表示できます。
アイテムレベルのアクセス許可がVersionControlServer.SetPermissionsメソッドで設定されると、新しいアクセス許可オブジェクトが作成され、ServerItemがそのアイテムのサーバーパスに設定されます。アクセス許可オブジェクトには、そのユーザーまたはグループのすべてのアクセス許可が継承されている場合でも、ソース管理のアイテムの上に定義された各ユーザーまたはグループのエントリを含むEntriesプロパティがあります。さらに、アイテムに以前に設定されたアクセス許可をリセットした場合でも、継承されていないエントリが含まれていなくても、アクセス許可オブジェクトはサーバーに残ります。
つまり、時間の経過とともに、これらのアクセス許可オブジェクトのサイズは厳密に増加しているようです。これらのメソッドのパフォーマンスは、(たとえば、ブランチレベルで)大量の情報が返されるために低下し始めており、これらをクリーンアップするためのRemovePermissionsメソッドを知りません。そのようなものは存在しますか?サーバー上でこれらのクラッターオブジェクトが定義されていない状態でアイテムがACLを透過的に継承するように、これらを永続的に削除するにはどうすればよいですか?