diff --git a/src/Cake.Common.Tests/Unit/Tools/MSBuild/MSBuildRunnerTests.cs b/src/Cake.Common.Tests/Unit/Tools/MSBuild/MSBuildRunnerTests.cs index c8abee5f95..64a491b8de 100644 --- a/src/Cake.Common.Tests/Unit/Tools/MSBuild/MSBuildRunnerTests.cs +++ b/src/Cake.Common.Tests/Unit/Tools/MSBuild/MSBuildRunnerTests.cs @@ -785,7 +785,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 7f6fe5009f..5eb4dd3ce4 100644 --- a/src/Cake.Common/Tools/MSBuild/MSBuildRunner.cs +++ b/src/Cake.Common/Tools/MSBuild/MSBuildRunner.cs @@ -298,9 +298,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()); } } }