From eea3c32bd52856a3f39443cf99783661855edfd7 Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Wed, 17 May 2023 09:41:36 -0500 Subject: [PATCH] [Xamarin.Android.Build.Tasks] introduce Eol.targets for .NET 6 Fixes: https://github.com/xamarin/xamarin-android/issues/8003 Add a new `Eol.targets` file to be imported for `net6.0-android` projects. It contains the necessary/minimal settings to emit the build error: Microsoft.NET.EolTargetFrameworks.targets(35,5): error NETSDK1202: The workload 'android' is out of support and will not receive security updates in the future. Please refer to https://aka.ms/maui-support-policy for more information about the support policy. We will probably need the latest .NET SDK to flow to us, in order to write a test. I could only test locally by editing `.targets` files in the .NET SDK. --- .../Microsoft.Android.Sdk/Sdk/Eol.targets | 44 +++++++++++++++++++ .../WorkloadManifest.in.targets | 4 +- .../Xamarin.Android.Build.Tests/XASdkTests.cs | 11 +++++ .../Xamarin.ProjectTools/Common/DotNetCLI.cs | 6 +++ 4 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/Sdk/Eol.targets diff --git a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/Sdk/Eol.targets b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/Sdk/Eol.targets new file mode 100644 index 00000000000..a76b5dbb53c --- /dev/null +++ b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/Sdk/Eol.targets @@ -0,0 +1,44 @@ + + + + + $(WarningsAsErrors);NETSDK1202 + + true + 21.0 + + + + + + + + + + + + diff --git a/src/Xamarin.Android.Build.Tasks/Microsoft.NET.Sdk.Android/WorkloadManifest.in.targets b/src/Xamarin.Android.Build.Tasks/Microsoft.NET.Sdk.Android/WorkloadManifest.in.targets index eab40d817a6..81faa7725c6 100644 --- a/src/Xamarin.Android.Build.Tasks/Microsoft.NET.Sdk.Android/WorkloadManifest.in.targets +++ b/src/Xamarin.Android.Build.Tasks/Microsoft.NET.Sdk.Android/WorkloadManifest.in.targets @@ -4,7 +4,7 @@ Condition=" $([MSBuild]::VersionEquals($(TargetFrameworkVersion), '8.0')) " /> - @@ -16,7 +16,7 @@ /> - + diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/XASdkTests.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/XASdkTests.cs index 2691ac568bf..2840c248451 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/XASdkTests.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/XASdkTests.cs @@ -1300,6 +1300,17 @@ public void SettingCombinations (bool isRelease, bool useInterpreter, bool publi Assert.AreEqual (expected, builder.Build (), $"{proj.ProjectName} should {(expected ? "succeed" : "fail")}"); } + [Test] + public void EolFrameworks() + { + var library = new XASdkProject (outputType: "Library") { + TargetFramework = "net6.0-android", + }; + var dotnet = CreateDotNetBuilder (library); + Assert.IsFalse (dotnet.Restore (), $"{library.ProjectName} should fail"); + Assert.IsTrue (StringAssertEx.ContainsText (dotnet.LastBuildOutput, "NETSDK1202"), $"{dotnet.BuildLogFile} should have NETSDK1202."); + } + DotNetCLI CreateDotNetBuilder (string relativeProjectDir = null) { if (string.IsNullOrEmpty (relativeProjectDir)) { diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/DotNetCLI.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/DotNetCLI.cs index c0ba14ad487..4468c83bba6 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/DotNetCLI.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/DotNetCLI.cs @@ -96,6 +96,12 @@ public bool New (string template, string output = null) return Execute (arguments.ToArray ()); } + public bool Restore (string target = null, string runtimeIdentifier = null, string [] parameters = null) + { + var arguments = GetDefaultCommandLineArgs ("restore", target, runtimeIdentifier, parameters); + return Execute (arguments.ToArray ()); + } + public bool Build (string target = null, string runtimeIdentifier = null, string [] parameters = null) { var arguments = GetDefaultCommandLineArgs ("build", target, runtimeIdentifier, parameters);