Skip to content

[XSG] Fix inline StyleSheet CSS content with quotes#33874

Merged
StephaneDelcroix merged 2 commits intomainfrom
xsg-stylesheet-33867
Feb 11, 2026
Merged

[XSG] Fix inline StyleSheet CSS content with quotes#33874
StephaneDelcroix merged 2 commits intomainfrom
xsg-stylesheet-33867

Conversation

@StephaneDelcroix
Copy link
Copy Markdown
Contributor

Note

Are you waiting for the changes in this PR to be merged?
It would be very helpful if you could test the resulting artifacts from this PR and let us know in a comment if this change resolves your issue. Thank you!

Description

Fixes #33867

When inline StyleSheet content contains double quotes (e.g., in CSS placeholder strings like -maui-placeholder: "CSS Placeholder";), XSG was generating malformed C# code. The issue was that quotes weren't escaped for verbatim string literals.

Changes

In KnownMarkups.cs, the CSS content is now escaped by replacing " with "" before embedding in the generated verbatim string literal.

Test

Added Maui33867.xaml test that includes CSS with quoted content, matching the StyleSheetsPage.xaml from the sample app.

Fixes #33867

When inline StyleSheet content contains double quotes (e.g., in CSS
placeholder strings), the generated code was malformed because quotes
weren't escaped. In a verbatim string literal (@""), quotes must be
doubled (""). This fix escapes quotes in the CSS content before
generating the code.
Copilot AI review requested due to automatic review settings February 3, 2026 20:53
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes issue #33867 where the XAML Source Generator (XSG) generated malformed C# code when inline StyleSheet content contained double quotes (e.g., CSS placeholder strings like -maui-placeholder: "CSS Placeholder";). The fix escapes double quotes for verbatim string literals by doubling them ("""), which is the correct C# syntax for embedding quotes within verbatim string literals (@"...").

Changes:

  • Added quote escaping in KnownMarkups.cs for inline StyleSheet CSS content
  • Added comprehensive test (Maui33867.xaml and .xaml.cs) that validates the fix with both runtime and source generation

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.

File Description
src/Controls/src/SourceGen/KnownMarkups.cs Escapes double quotes in CSS content before embedding in generated verbatim string literal
src/Controls/tests/Xaml.UnitTests/Issues/Maui33867.xaml Test XAML file with inline StyleSheet containing CSS with quoted placeholder text
src/Controls/tests/Xaml.UnitTests/Issues/Maui33867.xaml.cs xUnit test that verifies SourceGen compiles without errors and runtime inflation works correctly

Comment on lines +39 to +44
else
{
var page = new Maui33867(inflator);
Assert.NotNull(page);
Assert.NotNull(page.testLabel);
}
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe we should actually inflate the page even with source gen, right? This else is incorrect.

Address review comment: remove else block so page inflation runs
for all XamlInflator values, not just Runtime/XamlC.
@StephaneDelcroix StephaneDelcroix merged commit 035bae1 into main Feb 11, 2026
25 of 28 checks passed
@StephaneDelcroix StephaneDelcroix deleted the xsg-stylesheet-33867 branch February 11, 2026 12:16
TamilarasanSF4853 pushed a commit to TamilarasanSF4853/maui that referenced this pull request Mar 2, 2026
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

## Description

Fixes dotnet#33867

When inline StyleSheet content contains double quotes (e.g., in CSS
placeholder strings like `-maui-placeholder: "CSS Placeholder";`), XSG
was generating malformed C# code. The issue was that quotes weren't
escaped for verbatim string literals.

## Changes

In `KnownMarkups.cs`, the CSS content is now escaped by replacing `"`
with `""` before embedding in the generated verbatim string literal.

## Test

Added `Maui33867.xaml` test that includes CSS with quoted content,
matching the `StyleSheetsPage.xaml` from the sample app.
@github-actions github-actions Bot locked and limited conversation to collaborators Mar 14, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[XSG] Inline StyleSheet with CDATA sections not parsed correctly

3 participants