示例#1
0
            public ProjectInfo UpdateDynamicFiles(ProjectInfo projectInfo, IEnumerable <string> currentDynamicSourceFiles)
            {
                var oldFiles = dynamicSourceFiles;
                var newFiles = currentDynamicSourceFiles.ToImmutableHashSet();

                dynamicSourceFiles = newFiles;

                var removedFiles = oldFiles.Except(newFiles);

                foreach (var document in removedFiles)
                {
                    foreach (var dynamicFileProvider in dynamicFileManager.GetDynamicFileProviders(document))
                    {
                        dynamicFileProvider.RemoveDynamicDocumentInfo(
                            projectInfo.Id,
                            projectInfo.FilePath,
                            document);
                    }
                }

                List <DocumentInfo> documents = new List <DocumentInfo> ();

                foreach (var document in dynamicSourceFiles)
                {
                    foreach (var dynamicFileProvider in dynamicFileManager.GetDynamicFileProviders(document))
                    {
                        var dynamicFileInfo = dynamicFileProvider.GetDynamicDocumentInfo(
                            projectInfo.Id,
                            projectInfo.FilePath,
                            document);

                        bool alreadyAdded = projectInfo.Documents.Any(d => string.Equals(d.FilePath, document, StringComparison.OrdinalIgnoreCase));

                        if (dynamicFileInfo != null && !alreadyAdded)
                        {
                            documents.Add(dynamicFileInfo);
                        }
                    }
                }

                projectInfo = projectInfo.WithDocuments(projectInfo.Documents.Concat(documents));
                return(projectInfo);
            }
示例#2
0
            public ProjectInfo UpdateDynamicFiles(ProjectInfo projectInfo, IEnumerable <string> currentDynamicSourceFiles)
            {
                var oldFiles = dynamicSourceFiles;
                var newFiles = currentDynamicSourceFiles.ToImmutableHashSet();

                dynamicSourceFiles = newFiles;

                var addedFiles   = newFiles.Except(oldFiles);
                var removedFiles = oldFiles.Except(newFiles);

                foreach (var document in removedFiles)
                {
                    foreach (var dynamicFileProvider in dynamicFileManager.GetDynamicFileProviders(document))
                    {
                        dynamicFileProvider.RemoveDynamicDocumentInfo(
                            projectInfo.Id,
                            projectInfo.FilePath,
                            document);
                    }
                }

                List <DocumentInfo> documents = new List <DocumentInfo> ();

                foreach (var document in addedFiles)
                {
                    foreach (var dynamicFileProvider in dynamicFileManager.GetDynamicFileProviders(document))
                    {
                        var dynamicFileInfo = dynamicFileProvider.GetDynamicDocumentInfo(
                            projectInfo.Id,
                            projectInfo.FilePath,
                            document);

                        if (dynamicFileInfo != null)
                        {
                            documents.Add(dynamicFileInfo);
                        }
                    }
                }

                projectInfo = projectInfo.WithDocuments(projectInfo.Documents.Concat(documents));
                return(projectInfo);
            }