From 7e6b16229be9ee7e5314d72df5da0360dd07c12c Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Fri, 29 Apr 2011 10:18:23 +0100 Subject: [PATCH] Support getting project item by name in PowerShell scripts. --- .../Project/Src/EnvDTE/ProjectItems.cs | 15 ++++++++++++ .../Test/Src/EnvDTE/ProjectItemsTests.cs | 24 +++++++++++++++++++ 2 files changed, 39 insertions(+) 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); + } } }