msbuild
msbuild copied to clipboard
[Bug]: Escape , and ;= doesn't work for global property when build with dotnet, but html encode %3C and %3B= works well
Issue Description
-
Test escape ',' and "," and %3C in the powershell , cmd, bash and zsh. Found "," and ',' is not supported in the following 4 shells and cmd error is different from others.
-
Test ";=" and ';=' and %3B in 4 shells. Found when ";=" and ';=' global property, it reports error in 4 shells with the same error MSB1006: Property is not valid. But = and ; work well separately for global property
Powershell
With quotes: MSBUILD : error MSB1005: Specify a property and its value.
With double quotes: MSBUILD : error MSB1005: Specify a property and its value.
Html Codes. Works well
CMD
With quotes: MSBUILD : error MSB1006: Property is not valid.
With double quotes: MSBUILD : error MSB1005: Specify a property and its value.
With html codes: Good
bash
With quotes: MSBUILD : error MSB1005: Specify a property and its value.
With double quotes: MSBUILD : error MSB1005: Specify a property and its value.
Html codes: works well
ZSH
With quotes: MSBUILD : error MSB1005: Specify a property and its value.
With double quotes: MSBUILD : error MSB1005: Specify a property and its value.
Html codes work well
Steps to Reproduce
custom-proj1.zip dotnet version 9.0.100-preview.3.24204.13
- dotnet build custom-proj1.csproj /t:Init /p:F1=","
- dotnet build custom-proj1.csproj /t:Init /p:F1=";="
Expected Behavior
dotnet build should support such properties "," and ";=" as msbuild.exe
Actual Behavior
Dotnet build doesn't support the global property ", " and ";="
Analysis
No response
Versions & Configurations
No response
@JaynieBai could you please check whether it is shell or msbuild parsing causing this error? For that, please check which parameters msbuild received. You can set $env:MSBUILDDEBUGONSTART=1, run the build, start debugging and look the parameters that msbuild received in the code.
When run with dotnet, the CommandLine is D:\WORK\msbuild\artifacts\bin\bootstrap\core\sdk\9.0.100-rc.1.24452.12\MSBuild.dll .\MyApp.csproj /p:F1=,
When run with msbuild.exe, the CommandLine is D:\WORK\msbuild\artifacts\bin\bootstrap\net472\MSBuild\Current\Bin\MSBuild.exe .\MyApp.csproj /p:F1=","
So for dotnet build, we have to execute dotnet D:\WORK\msbuild\artifacts\bin\bootstrap\core\sdk\9.0.100-rc.1.24452.12\MSBuild.dll .\MyApp.csproj /p:F1=\",\" with escape character "
@rainersigwald This seems duplicate with https://github.com/dotnet/msbuild/issues/471#issuecomment-183053180.