コード例 #1
0
        /// <summary>
        /// Completely delete the contents of a solution folder
        /// </summary>
        ///
        public void DeleteSolutionFolderContents(VisualStudioSolutionProjectReference solutionFolder)
        {
            Guard.NotNull(solutionFolder, nameof(solutionFolder));

            if (solutionFolder.TypeId != VisualStudioProjectTypeIds.SolutionFolder)
            {
                throw new ArgumentException("Not a solution folder", "solutionFolder");
            }

            var solutionFolderId = solutionFolder.Id;

            for (;;)
            {
                var childProject =
                    NestedProjects
                    .Where(np => np.ParentProjectId == solutionFolderId)
                    .Select(np => GetProjectReference(np.ChildProjectId))
                    .FirstOrDefault();
                if (childProject == null)
                {
                    break;
                }

                if (childProject.TypeId == VisualStudioProjectTypeIds.SolutionFolder)
                {
                    DeleteSolutionFolder(childProject);
                }
                else
                {
                    DeleteProjectReferenceAndRelated(childProject);
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// Delete a project reference
        /// </summary>
        ///
        public void DeleteProjectReference(VisualStudioSolutionProjectReference projectReference)
        {
            Guard.NotNull(projectReference, nameof(projectReference));

            _lines.RemoveAt(projectReference.LineNumber, projectReference.LineCount);

            Load();
        }
コード例 #3
0
        /// <summary>
        /// Completely delete a solution folder and all its contents
        /// </summary>
        ///
        /// <remarks>
        /// To delete just the solution folder project reference, use <see cref="DeleteProjectReference(string)"/>
        /// </remarks>
        ///
        public void DeleteSolutionFolder(VisualStudioSolutionProjectReference solutionFolder)
        {
            Guard.NotNull(solutionFolder, nameof(solutionFolder));

            if (solutionFolder.TypeId != VisualStudioProjectTypeIds.SolutionFolder)
            {
                throw new ArgumentException("Not a solution folder", "solutionFolder");
            }

            var solutionFolderId = solutionFolder.Id;

            DeleteSolutionFolderContents(solutionFolder);
            DeleteProjectReferenceAndRelated(GetProjectReference(solutionFolderId));
        }
コード例 #4
0
        /// <summary>
        /// Add a project reference to the solution
        /// </summary>
        ///
        public VisualStudioSolutionProjectReference AddProjectReference(
            string typeId,
            string name,
            string location,
            string id)
        {
            Guard.NotNull(typeId, nameof(typeId));
            Guard.NotNull(name, nameof(name));
            Guard.NotNull(location, nameof(location));
            Guard.NotNull(id, nameof(id));

            _lines.Insert(
                GlobalStartLineNumber,
                VisualStudioSolutionProjectReference.FormatStart(typeId, name, location, id),
                VisualStudioSolutionProjectReference.FormatEnd());

            Load();

            return(GetProjectReference(id));
        }
コード例 #5
0
        /// <summary>
        /// Delete a project reference and anything else relating to it
        /// </summary>
        ///
        public void DeleteProjectReferenceAndRelated(VisualStudioSolutionProjectReference projectReference)
        {
            Guard.NotNull(projectReference, nameof(projectReference));

            var projectId = projectReference.Id;

            //
            // Delete related NestedProjects entries
            //
            for (;;)
            {
                var nesting =
                    NestedProjects.FirstOrDefault(n => n.ParentProjectId == projectId || n.ChildProjectId == projectId);
                if (nesting == null)
                {
                    break;
                }

                DeleteNestedProject(nesting);
            }

            //
            // Delete related project configurations
            //
            for (;;)
            {
                var configuration = ProjectConfigurations.FirstOrDefault(c => c.ProjectId == projectId);
                if (configuration == null)
                {
                    break;
                }

                DeleteProjectConfiguration(configuration);
            }

            //
            // Delete the project reference itself
            //
            DeleteProjectReference(GetProjectReference(projectId));
        }