diff --git a/Documentation/guides/building-apps/build-properties.md b/Documentation/guides/building-apps/build-properties.md index 55ce6c6f304..be7378f3c1a 100644 --- a/Documentation/guides/building-apps/build-properties.md +++ b/Documentation/guides/building-apps/build-properties.md @@ -469,6 +469,15 @@ Support for this property was added in Xamarin.Android 5.1. This property is `False` by default. +## AndroidEnableObsoleteOverrideInheritance + +A boolean property that determines if bound methods automatically inherit `[Obsolete]` +attributes from methods they override. + +Support for this property was added in .NET 8. + +This property is `True` by default. + ## AndroidEnablePreloadAssemblies A boolean property that controls diff --git a/src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Xamarin.Android.Bindings.Core.targets b/src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Xamarin.Android.Bindings.Core.targets index fd0674e9946..0344a49f591 100644 --- a/src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Xamarin.Android.Bindings.Core.targets +++ b/src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Xamarin.Android.Bindings.Core.targets @@ -99,6 +99,7 @@ It is shared between "legacy" binding projects and .NET 5 projects. EnableBindingNestedInterfaceTypes="$(AndroidBoundInterfacesContainTypes)" EnableBindingInterfaceConstants="$(AndroidBoundInterfacesContainConstants)" EnableRestrictToAttributes="$(AndroidEnableRestrictToAttributes)" + EnableObsoleteOverrideInheritance="$(AndroidEnableObsoleteOverrideInheritance)" Nullable="$(Nullable)" UseJavaLegacyResolver="$(_AndroidUseJavaLegacyResolver)" NamespaceTransforms="@(AndroidNamespaceReplacement)" diff --git a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.DefaultProperties.targets b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.DefaultProperties.targets index 2ec7baa7784..46a750a585b 100644 --- a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.DefaultProperties.targets +++ b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.DefaultProperties.targets @@ -39,6 +39,7 @@ true true true + true obsolete diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/Generator.cs b/src/Xamarin.Android.Build.Tasks/Tasks/Generator.cs index 33a9cad54cc..9744f864c4c 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/Generator.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/Generator.cs @@ -52,6 +52,7 @@ public class BindingsGenerator : AndroidDotnetToolTask public bool EnableBindingNestedInterfaceTypes { get; set; } public bool EnableBindingInterfaceConstants { get; set; } public string EnableRestrictToAttributes { get; set; } + public bool EnableObsoleteOverrideInheritance { get; set; } public string Nullable { get; set; } public ITaskItem[] TransformFiles { get; set; } @@ -217,6 +218,9 @@ protected override string GenerateCommandLineCommands () if (EnableBindingStaticAndDefaultInterfaceMethods) features.Add ("default-interface-methods"); + if (!EnableObsoleteOverrideInheritance) + features.Add ("do-not-fix-obsolete-overrides"); + if (string.Equals (EnableRestrictToAttributes, "obsolete", StringComparison.OrdinalIgnoreCase)) features.Add ("restrict-to-attributes");