diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectProperty.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectProperty.cs index 2d1ec5ede7..a75d4daa83 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectProperty.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectProperty.cs @@ -25,13 +25,25 @@ namespace ICSharpCode.PackageManagement.EnvDTE if (IsTargetFrameworkMoniker(Name)) { return GetTargetFrameworkMoniker(); + } else if (IsFullPath(Name)) { + return GetFullPath(); } return EmptyStringIfNull(value); } bool IsTargetFrameworkMoniker(string name) { - return String.Equals(name, "TargetFrameworkMoniker", StringComparison.InvariantCultureIgnoreCase); + return IsCaseInsensitiveMatch(name, "TargetFrameworkMoniker"); + } + + bool IsFullPath(string name) + { + return IsCaseInsensitiveMatch(name, "FullPath"); + } + + bool IsCaseInsensitiveMatch(string a, string b) + { + return String.Equals(a, b, StringComparison.InvariantCultureIgnoreCase); } string GetTargetFrameworkMoniker() @@ -44,6 +56,11 @@ namespace ICSharpCode.PackageManagement.EnvDTE get { return project.MSBuildProject; } } + string GetFullPath() + { + return MSBuildProject.Directory; + } + string EmptyStringIfNull(string value) { if (value != null) { diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectPropertyTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectPropertyTests.cs index ad9a681d9b..9b3516e342 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectPropertyTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectPropertyTests.cs @@ -126,5 +126,31 @@ namespace PackageManagement.Tests.EnvDTE Assert.AreEqual("4.0", targetFrameworkVersion); } + + [Test] + public void Value_GetFullPathProperty_ReturnsProjectDirectory() + { + CreateProperties(); + msbuildProject.FileName = @"d:\projects\MyProject\MyProject.csproj"; + + Property fullPathProperty = project.Properties.Item("FullPath"); + string fullPath = fullPathProperty.Value as string; + + string expectedFullPath = @"d:\projects\MyProject"; + Assert.AreEqual(expectedFullPath, fullPath); + } + + [Test] + public void Value_GetFullPathPropertyWithUpperCaseCharacters_ReturnsProjectDirectory() + { + CreateProperties(); + msbuildProject.FileName = @"d:\projects\MyProject\MyProject.csproj"; + + Property fullPathProperty = project.Properties.Item("FULLPATH"); + string fullPath = fullPathProperty.Value as string; + + string expectedFullPath = @"d:\projects\MyProject"; + Assert.AreEqual(expectedFullPath, fullPath); + } } }