From a456ad58c51889a89023e111aa360858d2bcd25a Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Wed, 27 Apr 2011 17:11:12 +0100 Subject: [PATCH] Support PowerShell scripts that access the TargetFrameworkMoniker project property. --- .../Project/Src/EnvDTE/Property.cs | 18 +++++++++++ .../Test/Src/EnvDTE/PropertyTests.cs | 31 ++++++++++++++++++- 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Property.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Property.cs index 37002adb6e..ab0db4273c 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Property.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Property.cs @@ -28,9 +28,27 @@ namespace ICSharpCode.PackageManagement.EnvDTE string GetProperty(string name) { string value = project.MSBuildProject.GetUnevalatedProperty(name); + if (value != null) { + return value; + } + + if (IsTargetFrameworkMoniker(name)) { + return GetTargetFrameworkMoniker(); + } return EmptyStringIfNull(value); } + bool IsTargetFrameworkMoniker(string name) + { + return String.Equals(name, "TargetFrameworkMoniker", StringComparison.InvariantCultureIgnoreCase); + } + + string GetTargetFrameworkMoniker() + { + var targetFramework = new ProjectTargetFramework(project.MSBuildProject); + return targetFramework.TargetFrameworkName.ToString(); + } + string EmptyStringIfNull(string value) { if (value != null) { diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/PropertyTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/PropertyTests.cs index 845e2d3d25..26ec478710 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/PropertyTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/PropertyTests.cs @@ -77,11 +77,40 @@ namespace PackageManagement.Tests.EnvDTE public void ItemValue_SetPostBuildEvent_MSBuildProjectIsSaved() { CreateProperties(); - project.Properties.Item("PostBuildEvent").Value = "test"; + properties.Item("PostBuildEvent").Value = "test"; bool saved = msbuildProject.IsSaved; Assert.IsTrue(saved); } + + [Test] + public void ItemValue_GetTargetFrameworkMoniker_ReturnsNet40ClientProfile() + { + CreateProperties(); + msbuildProject.SetProperty("TargetFrameworkVersion", "4.0"); + msbuildProject.SetProperty("TargetFrameworkProfile", "Client"); + + string targetFrameworkMoniker = properties.Item("TargetFrameworkMoniker").Value as string; + + string expectedTargetFrameworkMoniker = ".NETFramework,Version=v4.0,Profile=Client"; + + Assert.AreEqual(expectedTargetFrameworkMoniker, targetFrameworkMoniker); + } + + [Test] + public void ItemValue_GetTargetFrameworkMonikerUsingIncorrectCaseAndFrameworkIdentifierIsSilverlight_ReturnsNet35Silverlight() + { + CreateProperties(); + msbuildProject.SetProperty("TargetFrameworkIdentifier", "Silverlight"); + msbuildProject.SetProperty("TargetFrameworkVersion", "3.5"); + msbuildProject.SetProperty("TargetFrameworkProfile", "Full"); + + string targetFrameworkMoniker = properties.Item("targetframeworkmoniker").Value as string; + + string expectedTargetFrameworkMoniker = "Silverlight,Version=v3.5,Profile=Full"; + + Assert.AreEqual(expectedTargetFrameworkMoniker, targetFrameworkMoniker); + } } }