dotnet/releases/net471/KnownIssues/521954 - BCL CultureAwareCo...

32 lines
1.7 KiB
Markdown
Raw Normal View History

# CultureAwareComparer with ignore casing serialized on previous versions of .NET Framework does not correctly deserialize on .NET Framework 4.7.1
## Symptoms
2017-11-11 07:05:46 +08:00
When deserializing a CultureAwareComparer that was serialized using ignore case on a previous version of .NET Framework on a machine running .NET Framework 4.7.1, the comparer becomes case sensitive.
## Cause
In the .NET Framework 4.7.1 we added the ability to specify more comparer options when doing a culture-aware comparison.
As part of that change we introduced a new field on the comparer that holds the information about what kind of comparison is requested.
When that type, coming from a version of .NET Framework prior to 4.7.1 is deserialized on a .NET Framework 4.7.1 machine, the private field introduced in the .NET Framework 4.7.1 is reset to zero, which makes the comparer case sensitive.
## Impact
The following 2 comparers are susceptible to this issue. These comparers are usually used with collection types like Dictionary and Hashtable.
P:System.StringComparer.InvariantCultureIgnoreCase
P:System.StringComparer.CurrentCultureIgnoreCase
## Workarounds
Ensure that both serialization and deserialization occurs on systems running a version of the .NET Framework starting with 4.7.1.
## Resolution
If you are running on Windows 10 Fall Creators Update, an update is available that addresses this issue. Select one of the following links based on your processor architecture:
x86: https://go.microsoft.com/fwlink/?linkid=862758
x64: https://go.microsoft.com/fwlink/?linkid=862762
[09-Jan-2018] The fix for this issue is included in the [Update for .NET Framework 4.7.1 - KB4054856](http://go.microsoft.com/fwlink/?LinkId=866028) for all platforms except Windows 10 Fall Creators Update.