示例#1
0
        private Solution ApplyFileChanges(Solution solution, IEnumerable<FileChange> fileChanges, bool applyingChanges)
        {
            foreach (FileChange fileChange in fileChanges)
            {
                var oldDocument = fileChange.GetOldDocument();
                var updatedDocument = fileChange.GetUpdatedDocument();
                bool isAdditionalDoc = fileChange.IsAdditionalDocumentChange;

                if (oldDocument == null)
                {
                    // Added document to new solution.
                    // If unchecked, then remove this added document from new solution.
                    if (applyingChanges && fileChange.CheckState == __PREVIEWCHANGESITEMCHECKSTATE.PCCS_Unchecked)
                    {
                        solution = isAdditionalDoc ?
                            solution.RemoveAdditionalDocument(updatedDocument.Id) :
                            solution.RemoveDocument(updatedDocument.Id);
                    }
                }
                else if (updatedDocument == null)
                {
                    // Removed document from old solution.
                    // If unchecked, then add back this removed document to new solution.
                    if (applyingChanges && fileChange.CheckState == __PREVIEWCHANGESITEMCHECKSTATE.PCCS_Unchecked)
                    {
                        var oldText = oldDocument.GetTextAsync().Result.ToString();
                        solution = isAdditionalDoc ?
                            solution.AddAdditionalDocument(oldDocument.Id, oldDocument.Name, oldText, oldDocument.Folders, oldDocument.FilePath) :
                            solution.AddDocument(oldDocument.Id, oldDocument.Name, oldText, oldDocument.Folders, oldDocument.FilePath);
                    }
                }
                else
                {
                    // Changed document.
                    solution = isAdditionalDoc ?
                        solution.WithAdditionalDocumentText(updatedDocument.Id, updatedDocument.GetTextAsync().Result) :
                        solution.WithDocumentText(updatedDocument.Id, updatedDocument.GetTextAsync().Result);
                }
            }

            return solution;
        }