Open Lordfirespeed opened 3 months ago
Leaving this here for any future unfortunate souls -
When working with DefineConstants
, semicolons within its property value need to be escaped with %3B
.
The solution I proposed above will not work, each subsequence DefineConstants
overwrites the value of the previous. The rendered constants ["foo", "bar", "baz']
should loook like:
/p:DefineConstants=foo%3Bbar%3Bbaz
This does beg the question: Why are semicolons explicitly not escaped for DefineConstants
?
private static readonly HashSet<string> _propertiesNotEscapeSemicolons = new HashSet<string>
{
"DefineConstants",
"ExcludeFilesFromDeployment"
};
Prerequisites
Cake runner
Cake Frosting
Cake version
4.0.0
Operating system
Linux
Operating system architecture
64-Bit
CI Server
No response
What are you seeing?
MSBuild arguments are rendered like so:
Which leads to an error:
What is expected?
MSBuild properties should be specified in the correct format. For example:
Steps to Reproduce
Create a task with the following
Run
implementation:Ensure that
context.RootDirectory
is defined.Run the task.
Notes
Related: #1852 Of note, I believe this comment is incorrect. Perhaps
WithProperty("DefineConstants", "A=a", "B=b");
should instead generate: