wpf icon indicating copy to clipboard operation
wpf copied to clipboard

`System.Text.Json` SG is run twice in WPF projects

Open ZzZombo opened this issue 11 months ago • 6 comments

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 avatar Dec 13 '24 14:12 ZzZombo

@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?

Kuldeep-MS avatar Apr 01 '25 11:04 Kuldeep-MS

@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 avatar Apr 01 '25 12:04 ZzZombo

@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.

franchyd avatar Apr 01 '25 13:04 franchyd

@Kuldeep-MS were you able to reproduce with the sample project?

franchyd avatar Apr 04 '25 16:04 franchyd

any movement on this?

franchyd avatar May 13 '25 16:05 franchyd

Looks like the same as https://github.com/dotnet/wpf/issues/9589#issuecomment-3259564750 - I added a workaround and reccomended fix there.

ericstj avatar Sep 05 '25 20:09 ericstj