diff --git a/src/Cake.Common.Tests/Unit/Tools/MSBuild/MSBuildRunnerTests.cs b/src/Cake.Common.Tests/Unit/Tools/MSBuild/MSBuildRunnerTests.cs index 4bef61f7f3..b0ec4c60a4 100644 --- a/src/Cake.Common.Tests/Unit/Tools/MSBuild/MSBuildRunnerTests.cs +++ b/src/Cake.Common.Tests/Unit/Tools/MSBuild/MSBuildRunnerTests.cs @@ -713,7 +713,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 b5d922bbb0..56ca0c86a5 100644 --- a/src/Cake.Common/Tools/MSBuild/MSBuildRunner.cs +++ b/src/Cake.Common/Tools/MSBuild/MSBuildRunner.cs @@ -275,9 +275,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()); } } }