예제 #1
0
            private async Task EnqueueWorkItemAsync(ProjectChanges projectChanges)
            {
                await EnqueueProjectConfigurationChangeWorkItemAsync(projectChanges)
                .ConfigureAwait(false);

                foreach (var addedDocumentId in projectChanges.GetAddedDocuments())
                {
                    await EnqueueWorkItemAsync(
                        projectChanges.NewProject.GetRequiredDocument(addedDocumentId),
                        InvocationReasons.DocumentAdded
                        )
                    .ConfigureAwait(false);
                }

                foreach (var changedDocumentId in projectChanges.GetChangedDocuments())
                {
                    await EnqueueWorkItemAsync(
                        projectChanges.OldProject.GetRequiredDocument(changedDocumentId),
                        projectChanges.NewProject.GetRequiredDocument(changedDocumentId)
                        )
                    .ConfigureAwait(continueOnCapturedContext: false);
                }

                foreach (var removedDocumentId in projectChanges.GetRemovedDocuments())
                {
                    await EnqueueWorkItemAsync(
                        projectChanges.OldProject.GetRequiredDocument(removedDocumentId),
                        InvocationReasons.DocumentRemoved
                        )
                    .ConfigureAwait(false);
                }
            }
        /// <summary>
        /// Saves the updated documents to disk.
        /// </summary>
        /// <param name="projectChanges">The project changes.</param>
        /// <param name="newSolution">The new solution.</param>
        private static void SaveUpdatedDocumentsToDisk(ProjectChanges projectChanges, Solution newSolution)
        {
            var s_utf8WithoutBom   = new UTF8Encoding(false);
            var changedDocumentIds = projectChanges.GetChangedDocuments(true).ToList();

            changedDocumentIds.ForEach(documentId =>
            {
                var document = newSolution.GetDocument(documentId);
                var text     = document.GetTextAsync();
                using (var writer = new StreamWriter(document.FilePath, append: false, encoding: text.Result.Encoding ?? s_utf8WithoutBom))
                {
                    text.Result.Write(writer);
                }
            });
        }
예제 #3
0
            private async Task EnqueueWorkItemAsync(ProjectChanges projectChanges)
            {
                await EnqueueProjectConfigurationChangeWorkItemAsync(projectChanges).ConfigureAwait(false);

                foreach (var addedDocumentId in projectChanges.GetAddedDocuments())
                {
                    await EnqueueWorkItemAsync(projectChanges.NewProject.GetDocument(addedDocumentId), InvocationReasons.DocumentAdded).ConfigureAwait(false);
                }

                foreach (var changedDocumentId in projectChanges.GetChangedDocuments())
                {
                    await EnqueueWorkItemAsync(projectChanges.OldProject.GetDocument(changedDocumentId), projectChanges.NewProject.GetDocument(changedDocumentId))
                        .ConfigureAwait(continueOnCapturedContext: false);
                }

                foreach (var removedDocumentId in projectChanges.GetRemovedDocuments())
                {
                    await EnqueueWorkItemAsync(projectChanges.OldProject.GetDocument(removedDocumentId), InvocationReasons.DocumentRemoved).ConfigureAwait(false);
                }
            }