public static FileModifierResult RemoveFiles(string csProjFilePath, IEnumerable <string> filePaths) { FileModifierResult result = ModifyFiles(csProjFilePath, filePaths, (doc, filePath) => { RemoveFile(doc, filePath); }); return(result); }
private static FileModifierResult ModifyFiles(string csProjFilePath, IEnumerable <string> filePaths, Action <XDocument, string> modifyFileAction) { FileModifierResult result = new FileModifierResult { Success = true }; FileAttributes initialAttributes = FileAttributeModifier.GetFileAttributes(csProjFilePath); try { // if file has one of these attributes, unathorized exception is thrown, so they are removed FileAttributeModifier.RemoveAttributesFromFile(csProjFilePath, FileAttributes.ReadOnly | FileAttributes.Hidden); XDocument doc = XDocument.Load(csProjFilePath); foreach (string filePath in filePaths) { string relativeFilePath = filePath; if (Path.IsPathRooted(filePath)) { relativeFilePath = Utils.GetRelativePath(filePath, csProjFilePath); } modifyFileAction(doc, relativeFilePath); } doc.Save(csProjFilePath); } catch (UnauthorizedAccessException) { result.Message = Constants.AddFilesInsufficientPrivilegesMessage; result.Success = false; } catch { result.Success = false; } finally { // return the attributes to normal try { FileAttributeModifier.SetFileAttributes(csProjFilePath, initialAttributes); } catch { } } return(result); }