CommunityToolkit / Maui

The .NET MAUI Community Toolkit is a community-created library that contains .NET MAUI Extensions, Advanced UI/UX Controls, and Behaviors to help make your life as a .NET MAUI developer easier
https://learn.microsoft.com/dotnet/communitytoolkit/maui
MIT License
2.2k stars 379 forks source link

[BUG] Warning when including a ValueConverter starting in .NET MAUI 9 #2205

Open hansmbakker opened 6 days ago

hansmbakker commented 6 days ago

Is there an existing issue for this?

Did you read the "Reporting a bug" section on Contributing file?

Current Behavior

Including a Converter from the MAUI Community Toolkit in a .NET MAUI 9 app triggers a warning

When referencing a converter (e.g. from the MAUI Community Toolkit) in XAML, xamlc generates a warning with code XC0103 in .NET 9 RC1. On .NET 8 this warning was not there.

This is especially annoying in projects where TreatWarningsAsErrors is enabled.

⚠️ The warning log below is a sample. However, this is an issue for all converters, not only for this specific IsNullConverter.

XamlC warning XC0103: Consider attributing the markup extension "CommunityToolkit.Maui.Converters.IsNullConverter" with [RequireService] or [AcceptEmptyServiceProvider] if it doesn't require any.

Expected Behavior

ValueConverters from the MAUI Community Toolkit can be included without triggering errors

Steps To Reproduce

  1. Create new MAUI project on .NET 9 RC1
  2. Add a converter to the main page's resources from the MAUI Community Toolkit
  3. Run dotnet build
  4. See the warning

Link to public reproduction project repository

https://github.com/hansmbakker/bugrepro-converter-issue

Environment

- .NET MAUI CommunityToolkit: 9.0.3
- OS:
- .NET MAUI: 9.0 RC1

Anything else?

This is caused by https://github.com/dotnet/maui/issues/19650 / https://github.com/dotnet/maui/pull/19945.

ValueConverters are expected to be attributed by RequireService or AcceptEmptyServiceProvider.

VladislavAntonyuk commented 6 days ago

We don't currently support .NET 9

bijington commented 6 days ago

@VladislavAntonyuk we don't but this might be an issue worth keeping open for when we put in the work? .NET 9 is roughly only 2 months away

daltzctr commented 1 day ago

RC 1 has been out and customers are starting to migrate. This actually seems to break some functionality with converters, so this is pretty critical.

brminnick commented 1 day ago

Yes, we will provide .NET 9 support when it GAs in November.

bijington commented 22 hours ago

RC 1 has been out and customers are starting to migrate. This actually seems to break some functionality with converters, so this is pretty critical.

If you would like to speed things up please feel free to open a branch and submit a draft PR with the required changes

bijington commented 19 hours ago

I have created a branch and draft PR here: https://github.com/CommunityToolkit/Maui/pull/2215

There are some errors that I will try to work through but if anyone wants to jump in please feel free

hansmbakker commented 18 hours ago

if anyone wants to jump in please feel free

Good that you started this - can others commit on this branch?

There are some errors

@bijington the SDK being used in the pipeline is the wrong one (it sticks to the .NET 8 one). Please see my comment in the PR for a suggestion.

bijington commented 18 hours ago

Non-maintainers probably can't push to this branch but they could open a PR into this branch. That might work well if multiple people get involved.

Thanks for the pointers on the pipeline builds. I'm fighting with getting it compiled locally first 😟