diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItems.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItems.cs index 3abbfb8dd5..03c1485e80 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItems.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItems.cs @@ -48,5 +48,20 @@ namespace ICSharpCode.PackageManagement.EnvDTE { return GetEnumerator(); } + + public ProjectItem Item(string name) + { + foreach (ProjectItem item in this) { + if (IsMatch(item, name)) { + return item; + } + } + return null; + } + + bool IsMatch(ProjectItem item, string name) + { + return String.Equals(item.Name, name, StringComparison.InvariantCultureIgnoreCase); + } } } diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemsTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemsTests.cs index 1a56c28bf2..478a7c0d22 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemsTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemsTests.cs @@ -300,5 +300,29 @@ namespace PackageManagement.Tests.EnvDTE ProjectItemCollectionAssertAreEqual(expectedItems, enumerable); } + + [Test] + public void Item_GetProjectItemByName_ReturnsFileInsideProject() + { + CreateProjectItems(); + msbuildProject.AddFile("Program.cs"); + + var projectItem = projectItems.Item("Program.cs") as DTE.ProjectItem; + string projectItemName = projectItem.Name; + + Assert.AreEqual("Program.cs", projectItemName); + } + + [Test] + public void Item_GetProjectItemByNameWhenNameCaseDoesNotMatchFileNameInProject_ReturnsFileInsideProject() + { + CreateProjectItems(); + msbuildProject.AddFile("Program.cs"); + + var projectItem = projectItems.Item("PROGRAM.CS") as DTE.ProjectItem; + string projectItemName = projectItem.Name; + + Assert.AreEqual("Program.cs", projectItemName); + } } }