From eeb3684f4710be8f88c8ba31c3bfaa77d1eca5ec Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Fri, 29 Apr 2011 20:00:10 +0100 Subject: [PATCH] PowerShell scripts can now access the FullPath property for project items. --- .../Project/Src/EnvDTE/ProjectItem.cs | 4 ++++ .../Src/EnvDTE/ProjectItemPropertyFactory.cs | 3 ++- .../Src/EnvDTE/ProjectItemPropertyTests.cs | 22 +++++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItem.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItem.cs index 27e56bad03..6b803d9ea0 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItem.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItem.cs @@ -13,8 +13,10 @@ namespace ICSharpCode.PackageManagement.EnvDTE public class ProjectItem { SD.FileProjectItem projectItem; + public const string CopyToOutputDirectoryPropertyName = "CopyToOutputDirectory"; public const string CustomToolPropertyName = "CustomTool"; + public const string FullPathPropertyName = "FullPath"; public ProjectItem(Project project, FileProjectItem projectItem) { @@ -44,6 +46,8 @@ namespace ICSharpCode.PackageManagement.EnvDTE return GetCopyToOutputDirectory(); } else if (name == CustomToolPropertyName) { return projectItem.CustomTool; + } else if (name == FullPathPropertyName) { + return projectItem.FileName; } return String.Empty; } diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItemPropertyFactory.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItemPropertyFactory.cs index a6790e13e7..3b90f2e76c 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItemPropertyFactory.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItemPropertyFactory.cs @@ -23,7 +23,8 @@ namespace ICSharpCode.PackageManagement.EnvDTE public IEnumerator GetEnumerator() { yield return new ProjectItemProperty(projectItem, ProjectItem.CopyToOutputDirectoryPropertyName); - yield return new ProjectItemProperty(projectItem, "CustomTool"); + yield return new ProjectItemProperty(projectItem, ProjectItem.CustomToolPropertyName); + yield return new ProjectItemProperty(projectItem, ProjectItem.FullPathPropertyName); } } } diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemPropertyTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemPropertyTests.cs index 2b6205d95e..c346f38336 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemPropertyTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemPropertyTests.cs @@ -145,5 +145,27 @@ namespace PackageManagement.Tests.EnvDTE Assert.AreEqual("CustomTool", property.Name); } + + [Test] + public void Value_GetFullPath_ReturnsProjectItemFullFileName() + { + CreateProjectItemProperties(); + msbuildFileProjectItem.FileName = @"d:\projects\test.cs"; + + string path = properties.Item("FullPath").Value as string; + + Assert.AreEqual(@"d:\projects\test.cs", path); + } + + [Test] + public void GetEnumerator_FindFullPathPropertyInAllProperties_ReturnsPropertyWithFullPathName() + { + CreateProjectItemProperties(); + + var projectItemProperties = new List(properties); + var property = projectItemProperties.Find(p => p.Name == "FullPath"); + + Assert.AreEqual("FullPath", property.Name); + } } }