public override void DeleteFiles(IEnumerable <IPackageFile> files, string rootDir) { HashSet <string> filesToPendDelete = new HashSet <string>(); foreach (var file in files) { var fullPath = GetFullPath(Path.Combine(rootDir, file.Path)); if (FileExists(fullPath)) { if (FileSystemExtensions.ContentEqual(this, fullPath, file.GetStream)) { filesToPendDelete.Add(fullPath); } else { Logger.Log(MessageLevel.Warning, NuGetResources.Warning_FileModified, fullPath); } } } // undo pending changes List <ITfsPendingChange> pendingChanges = Workspace.GetPendingChanges( GetFullPath(rootDir), RecursionType.Full).ToList(); Workspace.Undo(pendingChanges); foreach (var pendingChange in pendingChanges) { if (pendingChange.IsAdd) { filesToPendDelete.Remove(pendingChange.LocalItem); base.DeleteFile(pendingChange.LocalItem); } } Workspace.PendDelete(filesToPendDelete, RecursionType.None); }