-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Description
Describe the problem this feature would solve
We noticed an issue with the compiled binary size to drive #3145 when we did PR #3637. While we removed the System.Text.Json dependency, it instead pulled in a larger chunk of system dependencies into the final app binary.
To resolve this, we don't want to provide a default Json based serializer for the toolkit in 7.0. We'll instead provide the short examples of setting up each type of serializer for Newtonsoft.Json, System.Text.Json, and DataContractSerializer so app developers can use whichever they'd like.
However, this leads to a problem of what to do with the SystemInformation class which uses the base storage helper to store the values to track application statistics. @Sergio0694 pointed out that we could still just call the base Settings API calls directly.
Describe the solution
I'd like to investigate what would happen if we provided (at least for SystemInformation) a 'PassthruSerializer' which doesn't do any manipulation of values and just provides them raw. We'd just have to check how this behaves with the existing basic types of bool, long, and string that I believe the current SystemInformation helper uses.
Describe alternatives you've considered
By referencing any Json based serializer we add at least 800kb+ to the final compiled binary from .NET Native, so this can have a large impact on all our packages as many depend on the Microsoft.Toolkit.Uwp package.
Additional context & Screenshots
@RosarioPulella had started this work here, but this would change the contract even more. If we can instead still keep the SystemInformation class encapsulated, it'll be easier to use.