wpf
wpf copied to clipboard
`System.Text.Json` SG is run twice in WPF projects
Description
Similar to https://github.com/dotnet/extensions/issues/4969, the SG is included twice in a compilation, resulting in duplicate definition errors and build failure due to the way WPF is built, involving a temporary project.
Reproduction Steps
- Start a new WPF project.
- Create a SG-enabled JSON serialization context, the target type and options do not matter, it should just be minimally functional.
- Try to build. The Output pane lists the errors twice, once for the temporary project and once, verbatim, for the actual one.
Expected behavior
SG is included only once.
Actual behavior
SG is included twice and prevents the build from finishing successfully.
Regression?
I can't say, sorry. There was one other issue previously but because of two SGs being active at once.
Known Workarounds
I can't say, unless switching back to reflection is considered one.
Configuration
I target net9-windows on Windows 10 x64. It shouldn't be specific to that configuration but I don't know for sure.
Other information
AS I said already, it shows up twice in output, once per each project in the compilation, even though IMO the temp. WPF project shouldn't run the JSON SG at all, so preventing it from running in either when building a WPF application should fix the issue.
@ZzZombo - I attempted to replicate the issue on my end, but it seems I might be missing some setup details. Could you please provide a minimal sample repro application?
@ZzZombo - I attempted to replicate the issue on my end, but it seems I might be missing some setup details. Could you please provide a minimal sample repro application?
Sure, but fair warning, I'm currently on sick leave and unlikely to get access to the project for a week.
@ZzZombo - I attempted to replicate the issue on my end, but it seems I might be missing some setup details. Could you please provide a minimal sample repro application?
I setup a minimal repro here: https://gist.github.com/franchyd/5778573e8dfe214336ddd8d08639cb49
This is a freshly generated project from the WPF template with only the addition of a PackageReference to the csproj and an arbitrary class to trigger the System.Text.Json source generator. I chose to add that class to MainWindow.xaml.cs but it could go anywhere.
You may note that you can "fix" the issue for this project by removing the PackageReference. In this contrived min-reproduction case this may be an option but in real projects the System.Text.Json could be transitive or the specific version necessary.
@Kuldeep-MS were you able to reproduce with the sample project?
any movement on this?
Looks like the same as https://github.com/dotnet/wpf/issues/9589#issuecomment-3259564750 - I added a workaround and reccomended fix there.