Exemplo n.º 1
0
        public static FileModifierResult RemoveFiles(string csProjFilePath, IEnumerable <string> filePaths)
        {
            FileModifierResult result = ModifyFiles(csProjFilePath, filePaths, (doc, filePath) =>
            {
                RemoveFile(doc, filePath);
            });

            return(result);
        }
Exemplo n.º 2
0
        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);
        }