From ba372efbff09121ce07651c17ed5fa6db27d7c5c Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Sat, 3 Dec 2016 14:40:49 +0000 Subject: [PATCH] Fix properties added by NuGet package PowerShell script being encoded The SlowCheetah NuGet package uses the MSBuild API to directly modify the MSBuild project file stored in memory in MSBuild's GlobalProjectCollection. It adds properties that contain special MSBuild characters, for example $( ). When SharpDevelop was merging these new properties back into the project file on disk it was using MSBuild to encode them so the wrong values were added. Now the property values are not encoded. --- .../Src/Scripting/MSBuildProjectPropertiesMerger.cs | 2 +- .../Scripting/MSBuildProjectPropertiesMergerTests.cs | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/Scripting/MSBuildProjectPropertiesMerger.cs b/src/AddIns/Misc/PackageManagement/Project/Src/Scripting/MSBuildProjectPropertiesMerger.cs index 07cba71416..e970e6adeb 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/Scripting/MSBuildProjectPropertiesMerger.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/Scripting/MSBuildProjectPropertiesMerger.cs @@ -93,7 +93,7 @@ namespace ICSharpCode.PackageManagement.Scripting void SetPropertyInSharpDevelopProject(ProjectPropertyElement msbuildProjectProperty) { - sharpDevelopProject.SetProperty(msbuildProjectProperty.Name, msbuildProjectProperty.Value); + sharpDevelopProject.SetProperty(msbuildProjectProperty.Name, msbuildProjectProperty.Value, treatPropertyValueAsLiteral: false); } bool HasMSBuildProjectPropertyBeenUpdated(ProjectPropertyElement msbuildProjectProperty, ProjectPropertyElement sharpDevelopProjectProperty) diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Scripting/MSBuildProjectPropertiesMergerTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Scripting/MSBuildProjectPropertiesMergerTests.cs index 3989986081..f9fe8ba509 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/Scripting/MSBuildProjectPropertiesMergerTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/Scripting/MSBuildProjectPropertiesMergerTests.cs @@ -260,5 +260,17 @@ namespace PackageManagement.Tests.Scripting Assert.IsFalse(propertiesMerger.Result.AnyPropertiesChanged()); } + + [Test] + public void Merge_MSBuildProjectHasNewPropertyAddedWithEncodableCharacters_PropertyAddedToSharpDevelopProjectWithoutEncodingCharacters() + { + var propertyGroup = msbuildProject.Xml.AddPropertyGroup(); + propertyGroup.SetProperty("Test", "$(Value)"); + + Merge(); + + string value = sharpDevelopProject.GetUnevalatedProperty("Test"); + Assert.AreEqual("$(Value)", value); + } } }