private static IEnumerable <string> GetProjectReferenceDependencyFilePathsRecursive_Internal(this ProjectFileModel projectFileModel, string projectFilePath, HashSet <string> pathAccumulator)
        {
            var dependencyProjectFilePaths = projectFileModel.GetProjectReferenceDependencyFilePaths(projectFilePath);

            foreach (var dependencyProjectFilePath in dependencyProjectFilePaths)
            {
                if (!pathAccumulator.Contains(dependencyProjectFilePath))
                {
                    pathAccumulator.Add(dependencyProjectFilePath);
                    yield return(dependencyProjectFilePath);
                }

                var dependencyProjectFile = ProjectFileSerialization.Deserialize(dependencyProjectFilePath);

                var dependencyDependencyProjectFilePaths = dependencyProjectFile.GetProjectReferenceDependencyFilePathsRecursive(dependencyProjectFilePath);
                foreach (var dependencyDependencyProjectFilePath in dependencyDependencyProjectFilePaths)
                {
                    if (!pathAccumulator.Contains(dependencyDependencyProjectFilePath))
                    {
                        pathAccumulator.Add(dependencyDependencyProjectFilePath);
                        yield return(dependencyDependencyProjectFilePath);
                    }
                }
            }
        }
        public ProjectFileModel Deserialize(string projectFilePath)
        {
            var projectFile = ProjectFileSerialization.Deserialize(projectFilePath);

            return(projectFile);
        }
 public static void Save(this ProjectFileModel projectFile, string projectFilePath)
 {
     ProjectFileSerialization.Serialize(projectFilePath, projectFile);
 }
 public void Serialize(string projectFilePath, ProjectFileModel projectFile, bool overwrite = true)
 {
     ProjectFileSerialization.Serialize(projectFilePath, projectFile, overwrite);
 }