From ab0feb5fef40bdd649b6187969b0d29b87a5dbe8 Mon Sep 17 00:00:00 2001 From: Evgeny Tvorun Date: Mon, 15 Jul 2024 10:14:10 -0700 Subject: [PATCH 1/4] Add mapping for Xamarin.CommunityToolkit --- .../XamarinCommunityToolkit.apimap.json | 289 ++++++++++++++++++ .../XamarinCommunityToolkit.packagemap.json | 33 ++ .../Microsoft/CommunityToolkit/metadata.json | 4 + 3 files changed, 326 insertions(+) create mode 100644 src/UpgradeAssistant.Mappings/mappings/Microsoft/CommunityToolkit/XamarinCommunityToolkit.apimap.json create mode 100644 src/UpgradeAssistant.Mappings/mappings/Microsoft/CommunityToolkit/XamarinCommunityToolkit.packagemap.json create mode 100644 src/UpgradeAssistant.Mappings/mappings/Microsoft/CommunityToolkit/metadata.json diff --git a/src/UpgradeAssistant.Mappings/mappings/Microsoft/CommunityToolkit/XamarinCommunityToolkit.apimap.json b/src/UpgradeAssistant.Mappings/mappings/Microsoft/CommunityToolkit/XamarinCommunityToolkit.apimap.json new file mode 100644 index 000000000..bec7d05f6 --- /dev/null +++ b/src/UpgradeAssistant.Mappings/mappings/Microsoft/CommunityToolkit/XamarinCommunityToolkit.apimap.json @@ -0,0 +1,289 @@ +{ + "Xamarin.CommunityToolkit.Behaviors": { + "value": "CommunityToolkit.Maui.Behaviors;CommunityToolkit.Maui.Animations", + "kind": "namespace", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Behaviors.Internals": { + "value": "CommunityToolkit.Maui.Behaviors", + "kind": "namespace", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Converters": { + "value": "CommunityToolkit.Maui.Converters", + "kind": "namespace", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Core": { + "value": "CommunityToolkit.Maui.Core", + "kind": "namespace", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Effects": { + "value": "CommunityToolkit.Maui.Core", + "kind": "namespace", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Extensions": { + "value": "CommunityToolkit.Maui.Extensions", + "kind": "namespace", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Extensions.Internals": { + "value": "CommunityToolkit.Maui.Extensions", + "kind": "namespace", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Helpers": { + "value": "CommunityToolkit.Maui.Converters", + "kind": "namespace", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.UI.Views": { + "value": "CommunityToolkit.Maui.Views;CommunityToolkit.Maui.Layouts;CommunityToolkit.Maui.Core;CommunityToolkit.Maui;CommunityToolkit.Maui.ImageSources;CommunityToolkit.Maui.Converters", + "kind": "namespace", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Markup": { + "value": "CommunityToolkit.Maui.Markup", + "kind": "namespace", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Markup.LeftToRight": { + "value": "CommunityToolkit.Maui.Markup", + "kind": "namespace", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Markup.RightToLeft": { + "value": "CommunityToolkit.Maui.Markup", + "kind": "namespace", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.UI.Views.AvatarView": { + "value": "CommunityToolkit.Maui.Views.AvatarView", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.UI.Views.Expander": { + "value": "CommunityToolkit.Maui.Views.Expander", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.UI.Views.DockLayout": { + "value": "CommunityToolkit.Maui.Layouts.DockLayout", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.UI.Views.StateView": { + "value": "CommunityToolkit.Maui.Layouts.StateView", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.UI.Views.GravatarImageSource": { + "value": "CommunityToolkit.Maui.ImageSources.GravatarImageSource", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.UI.Views.LayoutState": { + "value": "CommunityToolkit.Maui.Converters.LayoutState", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Behaviors.AnimationBehavior": { + "value": "CommunityToolkit.Maui.Behaviors.AnimationBehavior", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Behaviors.FadeAnimation": { + "value": "CommunityToolkit.Maui.Behaviors.FadeAnimation", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Behaviors.EventToCommandBehavior": { + "value": "CommunityToolkit.Maui.Behaviors.EventToCommandBehavior", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Behaviors.ImpliedOrderGridBehavior": { + "value": "CommunityToolkit.Maui.Behaviors.ImpliedOrderGridBehavior", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Behaviors.MaskedBehavior": { + "value": "CommunityToolkit.Maui.Behaviors.MaskedBehavior", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Behaviors.MaxLengthReachedBehavior": { + "value": "CommunityToolkit.Maui.Behaviors.MaxLengthReachedBehavior", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Behaviors.UserStoppedTypingBehavior": { + "value": "CommunityToolkit.Maui.Behaviors.UserStoppedTypingBehavior", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Behaviors.CharactersValidationBehavior": { + "value": "CommunityToolkit.Maui.Behaviors.CharactersValidationBehavior", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Behaviors.CharacterType": { + "value": "CommunityToolkit.Maui.Behaviors.CharacterType", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Behaviors.EmailValidationBehavior": { + "value": "CommunityToolkit.Maui.Behaviors.EmailValidationBehavior", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Behaviors.MultiValidationBehavior": { + "value": "CommunityToolkit.Maui.Behaviors.MultiValidationBehavior", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Behaviors.NumericValidationBehavior": { + "value": "CommunityToolkit.Maui.Behaviors.NumericValidationBehavior", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Behaviors.RequiredStringValidationBehavior": { + "value": "CommunityToolkit.Maui.Behaviors.RequiredStringValidationBehavior", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Behaviors.TextDecorationFlags": { + "value": "CommunityToolkit.Maui.Behaviors.TextDecorationFlags", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Behaviors.TextValidationBehavior": { + "value": "CommunityToolkit.Maui.Behaviors.TextValidationBehavior", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Behaviors.UriValidationBehavior": { + "value": "CommunityToolkit.Maui.Behaviors.UriValidationBehavior", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Behaviors.ValidationFlags": { + "value": "CommunityToolkit.Maui.Behaviors.ValidationFlags", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Behaviors.BaseBehavior": { + "value": "CommunityToolkit.Maui.Behaviors.Internal.BaseBehavior", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Behaviors.ValidationBehavior": { + "value": "CommunityToolkit.Maui.Behaviors.Internal.ValidationBehavior", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Converters.BoolToObjectConverter": { + "value": "CommunityToolkit.Maui.Converters.BoolToObjectConverter", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Converters.ByteArrayToImageSourceConverter": { + "value": "CommunityToolkit.Maui.Converters.ByteArrayToImageSourceConverter", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Converters.DateTimeOffsetConverter": { + "value": "CommunityToolkit.Maui.Converters.DateTimeOffsetConverter", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Converters.DoubleToIntConverter": { + "value": "CommunityToolkit.Maui.Converters.DoubleToIntConverter", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Converters.IndexToArrayItemConverter": { + "value": "CommunityToolkit.Maui.Converters.IndexToArrayItemConverter", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Converters.IntToBoolConverter": { + "value": "CommunityToolkit.Maui.Converters.IntToBoolConverter", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Converters.InvertedBoolConverter": { + "value": "CommunityToolkit.Maui.Converters.InvertedBoolConverter", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Converters.ItemTappedEventArgsConverter": { + "value": "CommunityToolkit.Maui.Converters.ItemTappedEventArgsConverter", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Converters.ListToStringConverter": { + "value": "CommunityToolkit.Maui.Converters.ListToStringConverter", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Converters.MultiConverter": { + "value": "CommunityToolkit.Maui.Converters.MultiConverter", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Converters.MultiConverterParameter": { + "value": "CommunityToolkit.Maui.Converters.MultiConverterParameter", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Converters.StateToBooleanConverter": { + "value": "CommunityToolkit.Maui.Converters.StateToBooleanConverter", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Converters.TextCaseConverter": { + "value": "CommunityToolkit.Maui.Converters.TextCaseConverter", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Converters.TextCaseType": { + "value": "CommunityToolkit.Maui.Converters.TextCaseType", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Converters.VariableMultiValueConverter": { + "value": "CommunityToolkit.Maui.Converters.VariableMultiValueConverter", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Helpers.MultiBindingCondition": { + "value": "CommunityToolkit.Maui.Converters.MultiBindingCondition", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Extensions.MultiValueConverterExtension": { + "value": "CommunityToolkit.Maui.Extensions.MultiValueConverterExtension", + "kind": "type", + "state": "Replaced" + }, + "Xamarin.CommunityToolkit.Extensions.ValueConverterExtension": { + "value": "CommunityToolkit.Maui.Extensions.ValueConverterExtension", + "kind": "type", + "state": "Replaced" + }, + "http://xamarin.com/schemas/2020/toolkit": { + "value": "http://schemas.microsoft.com/dotnet/2022/maui/toolkit", + "kind": "xmlnamespace", + "state": "Replaced", + "properties": [ + "Xamarin.CommunityToolkit.Behaviors", + "Xamarin.CommunityToolkit.Converters", + "Xamarin.CommunityToolkit.Effects", + "Xamarin.CommunityToolkit.Extensions", + "Xamarin.CommunityToolkit.UI.Views" + ] + } +} \ No newline at end of file diff --git a/src/UpgradeAssistant.Mappings/mappings/Microsoft/CommunityToolkit/XamarinCommunityToolkit.packagemap.json b/src/UpgradeAssistant.Mappings/mappings/Microsoft/CommunityToolkit/XamarinCommunityToolkit.packagemap.json new file mode 100644 index 000000000..853f2a1f5 --- /dev/null +++ b/src/UpgradeAssistant.Mappings/mappings/Microsoft/CommunityToolkit/XamarinCommunityToolkit.packagemap.json @@ -0,0 +1,33 @@ +{ + "packages": [ + { + "name": "Xamarin.CommunityToolkit", + "frameworks": { + ".NETCoreApp,Version=v6.0": [ + { + "name": "CommunityToolkit.Maui", + "version": "2.*" + } + ], + ".NETCoreApp,Version=v7.0": [ + { + "name": "CommunityToolkit.Maui", + "version": "5.*" + } + ], + ".NETCoreApp,Version=v8.0": [ + { + "name": "CommunityToolkit.Maui", + "version": "5.*" + } + ], + ".NETCoreApp,Version=v9.0": [ + { + "name": "CommunityToolkit.Maui", + "prerelease": true + } + ] + } + } + ] +} \ No newline at end of file diff --git a/src/UpgradeAssistant.Mappings/mappings/Microsoft/CommunityToolkit/metadata.json b/src/UpgradeAssistant.Mappings/mappings/Microsoft/CommunityToolkit/metadata.json new file mode 100644 index 000000000..9f075dbea --- /dev/null +++ b/src/UpgradeAssistant.Mappings/mappings/Microsoft/CommunityToolkit/metadata.json @@ -0,0 +1,4 @@ +{ + "traits": "(Xamarin | Maui)", + "order": 1000 +} From fd0650c73dabe77cd5e929ee267aea4c4804b03e Mon Sep 17 00:00:00 2001 From: Evgeny Tvorun Date: Mon, 15 Jul 2024 11:00:59 -0700 Subject: [PATCH 2/4] Fix tests and docs --- README.md | 19 +++++++++++++++++++ .../ApiMapValidationTests.cs | 2 +- .../SchemaValidationTests.cs | 4 ++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1121dcb98..f89d059f1 100644 --- a/README.md +++ b/README.md @@ -155,6 +155,25 @@ The above example would transform all occurrences of `Windows.UI.WindowManagemen Since the Upgrade Assistant uses Roslyn to parse and manipulate user-code, even user-code that calls `AppWindow.TryCreate()` will be upgraded. +For XAML upgrades additional mappings are needed. Here is an example: +```json +{ + "http://xamarin.com/schemas/2020/toolkit": { + "value": "http://schemas.microsoft.com/dotnet/2022/maui/toolkit", + "kind": "xmlnamespace", + "state": "Replaced", + "properties": [ + "Xamarin.CommunityToolkit.Behaviors", + "Xamarin.CommunityToolkit.Converters", + "Xamarin.CommunityToolkit.UI.Views" + ] + } +} +``` + +Upgrade Assistant will update XML namespaces like `xmlns:toolkit="http://xamarin.com/schemas/2020/toolkit"` to `xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"`. +It will also update XML namespaces like `xmlns:tk='clr-namespace:Xamarin.CommunityToolkit.Behaviors; assembly=...'` to `xmlns:tk='clr-namespace:Microsoft.Maui.Behaviors; assembly=...'`. + ## Engage, Contribute and Give Feedback Some of the best ways to contribute are to use the tool to upgrade your apps to the latest version of .NET (STS, LTS, or preview), file issues for feature-requests or bugs, join in design conversations, and make pull-requests. diff --git a/tests/UpgradeAssistant.Mappings.Tests/ApiMapValidationTests.cs b/tests/UpgradeAssistant.Mappings.Tests/ApiMapValidationTests.cs index 8d82a170e..411ea4540 100644 --- a/tests/UpgradeAssistant.Mappings.Tests/ApiMapValidationTests.cs +++ b/tests/UpgradeAssistant.Mappings.Tests/ApiMapValidationTests.cs @@ -9,7 +9,7 @@ namespace Microsoft.UpgradeAssistant.Mappings.Tests; public partial class ValidationTests { - private static readonly string[] Kinds = new string[] { "property", "method", "namespace", "type" }; + private static readonly string[] Kinds = new string[] { "property", "method", "namespace", "type", "xmlnamespace" }; private static readonly string[] States = new string[] { "NotImplemented", "Removed", "Replaced" }; [TestMethod] diff --git a/tests/UpgradeAssistant.Mappings.Tests/SchemaValidationTests.cs b/tests/UpgradeAssistant.Mappings.Tests/SchemaValidationTests.cs index b4364dd69..97810be4a 100644 --- a/tests/UpgradeAssistant.Mappings.Tests/SchemaValidationTests.cs +++ b/tests/UpgradeAssistant.Mappings.Tests/SchemaValidationTests.cs @@ -244,6 +244,10 @@ private static void AssertApiMapEntry(string relativePath, string elementPath, J { AssertPropertyType(relativePath, elementPath, property, JsonValueKind.String); } + else if (property.NameEquals("properties")) + { + AssertPropertyType(relativePath, elementPath, property, JsonValueKind.Array); + } else { AssertUnknownProperty(relativePath, elementPath, property); From 3a0e255f06aa8bdba9d3758067066fe3d291ae65 Mon Sep 17 00:00:00 2001 From: Evgeny Tvorun Date: Thu, 18 Jul 2024 15:22:45 -0700 Subject: [PATCH 3/4] Update map for CommunityToolkit --- .../XamarinCommunityToolkit.apimap.json | 231 +----------------- .../SchemaValidationTests.cs | 2 +- 2 files changed, 10 insertions(+), 223 deletions(-) diff --git a/src/UpgradeAssistant.Mappings/mappings/Microsoft/CommunityToolkit/XamarinCommunityToolkit.apimap.json b/src/UpgradeAssistant.Mappings/mappings/Microsoft/CommunityToolkit/XamarinCommunityToolkit.apimap.json index bec7d05f6..53d4fd688 100644 --- a/src/UpgradeAssistant.Mappings/mappings/Microsoft/CommunityToolkit/XamarinCommunityToolkit.apimap.json +++ b/src/UpgradeAssistant.Mappings/mappings/Microsoft/CommunityToolkit/XamarinCommunityToolkit.apimap.json @@ -59,231 +59,18 @@ "kind": "namespace", "state": "Replaced" }, - "Xamarin.CommunityToolkit.UI.Views.AvatarView": { - "value": "CommunityToolkit.Maui.Views.AvatarView", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.UI.Views.Expander": { - "value": "CommunityToolkit.Maui.Views.Expander", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.UI.Views.DockLayout": { - "value": "CommunityToolkit.Maui.Layouts.DockLayout", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.UI.Views.StateView": { - "value": "CommunityToolkit.Maui.Layouts.StateView", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.UI.Views.GravatarImageSource": { - "value": "CommunityToolkit.Maui.ImageSources.GravatarImageSource", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.UI.Views.LayoutState": { - "value": "CommunityToolkit.Maui.Converters.LayoutState", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Behaviors.AnimationBehavior": { - "value": "CommunityToolkit.Maui.Behaviors.AnimationBehavior", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Behaviors.FadeAnimation": { - "value": "CommunityToolkit.Maui.Behaviors.FadeAnimation", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Behaviors.EventToCommandBehavior": { - "value": "CommunityToolkit.Maui.Behaviors.EventToCommandBehavior", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Behaviors.ImpliedOrderGridBehavior": { - "value": "CommunityToolkit.Maui.Behaviors.ImpliedOrderGridBehavior", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Behaviors.MaskedBehavior": { - "value": "CommunityToolkit.Maui.Behaviors.MaskedBehavior", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Behaviors.MaxLengthReachedBehavior": { - "value": "CommunityToolkit.Maui.Behaviors.MaxLengthReachedBehavior", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Behaviors.UserStoppedTypingBehavior": { - "value": "CommunityToolkit.Maui.Behaviors.UserStoppedTypingBehavior", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Behaviors.CharactersValidationBehavior": { - "value": "CommunityToolkit.Maui.Behaviors.CharactersValidationBehavior", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Behaviors.CharacterType": { - "value": "CommunityToolkit.Maui.Behaviors.CharacterType", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Behaviors.EmailValidationBehavior": { - "value": "CommunityToolkit.Maui.Behaviors.EmailValidationBehavior", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Behaviors.MultiValidationBehavior": { - "value": "CommunityToolkit.Maui.Behaviors.MultiValidationBehavior", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Behaviors.NumericValidationBehavior": { - "value": "CommunityToolkit.Maui.Behaviors.NumericValidationBehavior", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Behaviors.RequiredStringValidationBehavior": { - "value": "CommunityToolkit.Maui.Behaviors.RequiredStringValidationBehavior", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Behaviors.TextDecorationFlags": { - "value": "CommunityToolkit.Maui.Behaviors.TextDecorationFlags", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Behaviors.TextValidationBehavior": { - "value": "CommunityToolkit.Maui.Behaviors.TextValidationBehavior", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Behaviors.UriValidationBehavior": { - "value": "CommunityToolkit.Maui.Behaviors.UriValidationBehavior", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Behaviors.ValidationFlags": { - "value": "CommunityToolkit.Maui.Behaviors.ValidationFlags", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Behaviors.BaseBehavior": { - "value": "CommunityToolkit.Maui.Behaviors.Internal.BaseBehavior", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Behaviors.ValidationBehavior": { - "value": "CommunityToolkit.Maui.Behaviors.Internal.ValidationBehavior", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Converters.BoolToObjectConverter": { - "value": "CommunityToolkit.Maui.Converters.BoolToObjectConverter", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Converters.ByteArrayToImageSourceConverter": { - "value": "CommunityToolkit.Maui.Converters.ByteArrayToImageSourceConverter", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Converters.DateTimeOffsetConverter": { - "value": "CommunityToolkit.Maui.Converters.DateTimeOffsetConverter", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Converters.DoubleToIntConverter": { - "value": "CommunityToolkit.Maui.Converters.DoubleToIntConverter", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Converters.IndexToArrayItemConverter": { - "value": "CommunityToolkit.Maui.Converters.IndexToArrayItemConverter", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Converters.IntToBoolConverter": { - "value": "CommunityToolkit.Maui.Converters.IntToBoolConverter", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Converters.InvertedBoolConverter": { - "value": "CommunityToolkit.Maui.Converters.InvertedBoolConverter", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Converters.ItemTappedEventArgsConverter": { - "value": "CommunityToolkit.Maui.Converters.ItemTappedEventArgsConverter", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Converters.ListToStringConverter": { - "value": "CommunityToolkit.Maui.Converters.ListToStringConverter", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Converters.MultiConverter": { - "value": "CommunityToolkit.Maui.Converters.MultiConverter", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Converters.MultiConverterParameter": { - "value": "CommunityToolkit.Maui.Converters.MultiConverterParameter", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Converters.StateToBooleanConverter": { - "value": "CommunityToolkit.Maui.Converters.StateToBooleanConverter", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Converters.TextCaseConverter": { - "value": "CommunityToolkit.Maui.Converters.TextCaseConverter", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Converters.TextCaseType": { - "value": "CommunityToolkit.Maui.Converters.TextCaseType", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Converters.VariableMultiValueConverter": { - "value": "CommunityToolkit.Maui.Converters.VariableMultiValueConverter", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Helpers.MultiBindingCondition": { - "value": "CommunityToolkit.Maui.Converters.MultiBindingCondition", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Extensions.MultiValueConverterExtension": { - "value": "CommunityToolkit.Maui.Extensions.MultiValueConverterExtension", - "kind": "type", - "state": "Replaced" - }, - "Xamarin.CommunityToolkit.Extensions.ValueConverterExtension": { - "value": "CommunityToolkit.Maui.Extensions.ValueConverterExtension", - "kind": "type", - "state": "Replaced" - }, "http://xamarin.com/schemas/2020/toolkit": { "value": "http://schemas.microsoft.com/dotnet/2022/maui/toolkit", "kind": "xmlnamespace", "state": "Replaced", - "properties": [ - "Xamarin.CommunityToolkit.Behaviors", - "Xamarin.CommunityToolkit.Converters", - "Xamarin.CommunityToolkit.Effects", - "Xamarin.CommunityToolkit.Extensions", - "Xamarin.CommunityToolkit.UI.Views" - ] + "properties": { + "xmlnsdefinitions": [ + "Xamarin.CommunityToolkit.Behaviors", + "Xamarin.CommunityToolkit.Converters", + "Xamarin.CommunityToolkit.Effects", + "Xamarin.CommunityToolkit.Extensions", + "Xamarin.CommunityToolkit.UI.Views" + ] + } } } \ No newline at end of file diff --git a/tests/UpgradeAssistant.Mappings.Tests/SchemaValidationTests.cs b/tests/UpgradeAssistant.Mappings.Tests/SchemaValidationTests.cs index 97810be4a..7aafbe96a 100644 --- a/tests/UpgradeAssistant.Mappings.Tests/SchemaValidationTests.cs +++ b/tests/UpgradeAssistant.Mappings.Tests/SchemaValidationTests.cs @@ -246,7 +246,7 @@ private static void AssertApiMapEntry(string relativePath, string elementPath, J } else if (property.NameEquals("properties")) { - AssertPropertyType(relativePath, elementPath, property, JsonValueKind.Array); + AssertPropertyType(relativePath, elementPath, property, JsonValueKind.Object); } else { From 376ca786ee242a5ac2653bcc5b284f6671f681ee Mon Sep 17 00:00:00 2001 From: Evgeny Tvorun Date: Wed, 24 Jul 2024 13:32:53 -0700 Subject: [PATCH 4/4] CR feedback --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f89d059f1..bd63e98ed 100644 --- a/README.md +++ b/README.md @@ -172,7 +172,8 @@ For XAML upgrades additional mappings are needed. Here is an example: ``` Upgrade Assistant will update XML namespaces like `xmlns:toolkit="http://xamarin.com/schemas/2020/toolkit"` to `xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"`. -It will also update XML namespaces like `xmlns:tk='clr-namespace:Xamarin.CommunityToolkit.Behaviors; assembly=...'` to `xmlns:tk='clr-namespace:Microsoft.Maui.Behaviors; assembly=...'`. +The `properties` contain values from assembly level XmlnsDefinitionAttribute from old SDK. Those values will be used to update +xmlns values like `xmlns:tk='clr-namespace:Xamarin.CommunityToolkit.Behaviors; assembly=...'` to `xmlns:tk='clr-namespace:Microsoft.Maui.Behaviors; assembly=...'`. ## Engage, Contribute and Give Feedback