From 770732d10329642e8f0dd6710aa6363bbfa120db Mon Sep 17 00:00:00 2001 From: Markus Date: Mon, 2 Apr 2018 19:14:22 +0200 Subject: [PATCH] changed msbuild's withProperty to forward multiple parameters as a comma separated list --- .../Unit/Tools/MSBuild/MSBuildRunnerTests.cs | 2 +- src/Cake.Common/Tools/MSBuild/MSBuildRunner.cs | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/Cake.Common.Tests/Unit/Tools/MSBuild/MSBuildRunnerTests.cs b/src/Cake.Common.Tests/Unit/Tools/MSBuild/MSBuildRunnerTests.cs index 66eac1d804..bd3f8c001a 100644 --- a/src/Cake.Common.Tests/Unit/Tools/MSBuild/MSBuildRunnerTests.cs +++ b/src/Cake.Common.Tests/Unit/Tools/MSBuild/MSBuildRunnerTests.cs @@ -679,7 +679,7 @@ public void Should_Append_Property_With_Multiple_Values_To_Process_Arguments() var result = fixture.Run(); // Then - Assert.Equal("/v:normal /p:A=B /p:A=E /p:C=D /target:Build " + + Assert.Equal("/v:normal /p:A=\"B,E\" /p:C=D /target:Build " + "\"C:/Working/src/Solution.sln\"", result.Args); } diff --git a/src/Cake.Common/Tools/MSBuild/MSBuildRunner.cs b/src/Cake.Common/Tools/MSBuild/MSBuildRunner.cs index 00dd021ec7..273623ced6 100644 --- a/src/Cake.Common/Tools/MSBuild/MSBuildRunner.cs +++ b/src/Cake.Common/Tools/MSBuild/MSBuildRunner.cs @@ -254,9 +254,14 @@ private static IEnumerable GetPropertyArguments(IDictionary 1) { - yield return string.Concat("/p:", propertyKey, "=", propertyValue.EscapeMSBuildPropertySpecialCharacters()); + var commaSeparatedValues = string.Join(",", properties[propertyKey].Select(x => x.EscapeMSBuildPropertySpecialCharacters())); + yield return string.Concat("/p:", propertyKey, "=", '"', commaSeparatedValues, '"'); + } + else if (properties[propertyKey].Count == 1) + { + yield return string.Concat("/p:", propertyKey, "=", properties[propertyKey].First().EscapeMSBuildPropertySpecialCharacters()); } } }