SPC050227: Do not call SPFileVersion.Delete to delete multiple versions

When you delete multiple versions of a file, use the DeleteByID() method; do not use the Delete() method. You will experience performance problems if you delete each SPFileVersion object from an SPFileVersionVersionCollection object.

TypeName: DoNotUseSPFileVersionDelete
CheckId: SPC050227
Severity: CriticalWarning
Type: AssemblyFileReference
Resolution

The recommended practice is to create an array that contains the ID properties of each version and then delete each version by using the SPFileVersionCollection.DeleteByID method.

SPSite site = new SPSite("site url");
SPWeb web = site.OpenWeb();
SPList list = web.Lists["custom list name"];
SPFile file = list.RootFolder.Files[0];
SPFileVersionCollection collection = file.Versions;
ArrayList idList = new ArrayList();
foreach (SPFileVersion ver in collection)
{
   idList.Add(ver.ID);
}
foreach (int verID in idList)
{
   try
   {
       collection.DeleteByID(verID);
   }
   catch (Exception ex)
   {
   }
}

Links

comments powered by Disqus