diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Project.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Project.cs index 4e24232086..cd45d6a465 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Project.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Project.cs @@ -275,5 +275,10 @@ namespace ICSharpCode.PackageManagement.EnvDTE { return fileService.GetCompilationUnit(fileName); } + + internal void RemoveProjectItem(ProjectItem projectItem) + { + projectService.RemoveProjectItem(MSBuildProject, projectItem.MSBuildProjectItem); + } } } diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItem.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItem.cs index 251fd4d0c2..d251f7dc95 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItem.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItem.cs @@ -149,5 +149,15 @@ namespace ICSharpCode.PackageManagement.EnvDTE { return projectItem.Include; } + + public virtual void Remove() + { + ContainingProject.RemoveProjectItem(this); + ContainingProject.Save(); + } + + internal FileProjectItem MSBuildProjectItem { + get { return projectItem; } + } } } diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemTests.cs index 6b7dd76d09..ce41f272e0 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemTests.cs @@ -193,5 +193,29 @@ namespace PackageManagement.Tests.EnvDTE Assert.AreEqual(@"d:\projects\MyProject\src\program.cs", fakeFileService.FileNamePassedToGetCompilationUnit); Assert.AreEqual(0, codeElements.Count); } + + [Test] + public void Remove_FileItemInProject_FileItemRemovedFromProject() + { + CreateProjectItems(); + msbuildProject.AddFile(@"program.cs"); + + ProjectItem fileItem = projectItems.Item("program.cs"); + fileItem.Remove(); + + Assert.AreEqual(0, msbuildProject.Items.Count); + } + + [Test] + public void Remove_FileItemInProject_ProjectIsSaved() + { + CreateProjectItems(); + msbuildProject.AddFile(@"program.cs"); + + ProjectItem fileItem = projectItems.Item("program.cs"); + fileItem.Remove(); + + Assert.IsTrue(msbuildProject.IsSaved); + } } }