diff --git a/.gitignore b/.gitignore
index a9f77ed3c21..69f44a9d9f1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,8 +19,7 @@ logcat-*.txt
apk-sizes-*.txt
*.rawproto
*.binlog
-src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.props
-src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.BundledVersions.props
+*.ProjectImports.zip
*~
external/monodroid/
external/mono/
diff --git a/Configuration.props b/Configuration.props
index 6d7d9e67e60..f9871cf6263 100644
--- a/Configuration.props
+++ b/Configuration.props
@@ -20,6 +20,8 @@
v4.4
19
+
+ 21
$(AndroidFirstApiLevel)
<_IsRunningNuGetRestore Condition="$(RestoreTaskAssemblyFile.EndsWith('NuGet.exe', StringComparison.InvariantCultureIgnoreCase))">True
diff --git a/Documentation/guides/OneDotNet.md b/Documentation/guides/OneDotNet.md
index 36320eaec60..e86d98f5e09 100644
--- a/Documentation/guides/OneDotNet.md
+++ b/Documentation/guides/OneDotNet.md
@@ -206,7 +206,7 @@ The following instructions can be used for early preview testing.
```xml
- net5.0
+ net5.0-android
android.21-arm64
Exe
diff --git a/build-tools/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks/GenerateSupportedPlatforms.cs b/build-tools/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks/GenerateSupportedPlatforms.cs
new file mode 100644
index 00000000000..8516d7ca87d
--- /dev/null
+++ b/build-tools/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks/GenerateSupportedPlatforms.cs
@@ -0,0 +1,83 @@
+using System.IO;
+using System.Linq;
+using System.Xml;
+using Microsoft.Build.Framework;
+using Microsoft.Build.Utilities;
+
+namespace Xamarin.Android.Tools.BootstrapTasks
+{
+ ///
+ /// Generates Microsoft.Android.Sdk.SupportedPlatforms.props
+ /// Similar to: https://github.com/dotnet/sdk/blob/18ee4eac8b3abe6d554d2e0c39d8952da0f23ce5/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.WindowsSupportedTargetPlatforms.props
+ ///
+ public class GenerateSupportedPlatforms : Task
+ {
+ ///
+ /// A list of AndroidApiInfo.xml files produced by Mono.Android.targets
+ ///
+ [Required]
+ public string [] AndroidApiInfo { get; set; }
+
+ ///
+ /// The output file to generate
+ ///
+ [Required]
+ public string OutputFile { get; set; }
+
+ ///
+ /// $(AndroidMinimumDotNetApiLevel) from Configuration.props
+ ///
+ [Required]
+ public int MinimumApiLevel { get; set; }
+
+ public override bool Execute ()
+ {
+ if (AndroidApiInfo.Length == 0) {
+ Log.LogError ("This task requires at least one AndroidApiInfo.xml file!");
+ return false;
+ }
+
+ var versions = new AndroidVersions (
+ AndroidApiInfo.Select (d => Path.GetDirectoryName (d)));
+ var settings = new XmlWriterSettings {
+ OmitXmlDeclaration = true,
+ Indent = true,
+ };
+ using (var writer = XmlWriter.Create (OutputFile, settings)) {
+
+ writer.WriteComment (@"
+***********************************************************************************************
+Microsoft.Android.Sdk.SupportedPlatforms.props
+
+Specifies the supported Android platform versions for this SDK.
+
+***********************************************************************************************
+");
+ writer.WriteStartElement ("Project");
+
+ writer.WriteStartElement ("PropertyGroup");
+ writer.WriteStartElement ("TargetPlatformVersion");
+ writer.WriteAttributeString ("Condition", " '$(TargetPlatformVersion)' == '' ");
+ writer.WriteString (versions.MaxStableVersion.ApiLevel.ToString ());
+ writer.WriteEndElement (); //
+ writer.WriteEndElement (); //
+
+ writer.WriteStartElement ("ItemGroup");
+ foreach (AndroidVersion version in versions.InstalledBindingVersions
+ .Where (v => v.ApiLevel >= MinimumApiLevel)
+ .OrderBy (v => v.ApiLevel)) {
+ writer.WriteStartElement ("AndroidSupportedTargetPlatform");
+ writer.WriteAttributeString ("Include", version.ApiLevel.ToString ());
+ writer.WriteEndElement (); //
+ }
+ writer.WriteStartElement ("SupportedTargetPlatform");
+ writer.WriteAttributeString ("Condition", " '$(TargetPlatformIdentifier)' == 'Android' ");
+ writer.WriteAttributeString ("Include", "@(AndroidSupportedTargetPlatform)");
+
+ writer.WriteEndDocument (); //
+ }
+
+ return !Log.HasLoggedErrors;
+ }
+ }
+}
diff --git a/build-tools/automation/azure-pipelines.yaml b/build-tools/automation/azure-pipelines.yaml
index 802a778a334..63c97b97311 100644
--- a/build-tools/automation/azure-pipelines.yaml
+++ b/build-tools/automation/azure-pipelines.yaml
@@ -52,7 +52,7 @@ variables:
NUnitConsoleVersion: 3.11.1
DotNetCoreVersion: 3.1.201
# Version number from: https://github.com/dotnet/installer#installers-and-binaries
- DotNetCorePreviewVersion: 5.0.100-preview.7.20307.3
+ DotNetCorePreviewVersion: 5.0.100-rc.1.20426.3
HostedMacMojave: Hosted Mac Internal Mojave
HostedMac: Hosted Mac Internal
HostedWinVS2019: Hosted Windows 2019 with VS2019
diff --git a/build-tools/automation/yaml-templates/use-dot-net.yaml b/build-tools/automation/yaml-templates/use-dot-net.yaml
index 62435344db9..a46e2b93435 100644
--- a/build-tools/automation/yaml-templates/use-dot-net.yaml
+++ b/build-tools/automation/yaml-templates/use-dot-net.yaml
@@ -12,6 +12,7 @@ steps:
Invoke-WebRequest -Uri "https://dot.net/v1/dotnet-install.ps1" -OutFile dotnet-install.ps1
& .\dotnet-install.ps1 -Version ${{ parameters.version }} -InstallDir "$env:ProgramFiles\dotnet\" -Verbose
& dotnet --list-sdks
+ Write-Host "##vso[task.setvariable variable=MSBuildDoNotTruncateConditions]1"
displayName: install .NET Core ${{ parameters.version }}
condition: and(succeeded(), eq(variables['agent.os'], 'Windows_NT'))
@@ -22,6 +23,7 @@ steps:
sh dotnet-install.sh --version ${{ parameters.version }} --install-dir $DOTNET_ROOT --verbose &&
dotnet --list-sdks &&
echo "##vso[task.setvariable variable=DOTNET_ROOT]$DOTNET_ROOT" &&
- echo "##vso[task.setvariable variable=PATH]$PATH"
+ echo "##vso[task.setvariable variable=PATH]$PATH" &&
+ echo "##vso[task.setvariable variable=MSBuildDoNotTruncateConditions]1"
displayName: install .NET Core ${{ parameters.version }}
condition: and(succeeded(), eq(variables['agent.os'], 'Darwin'))
diff --git a/src/Xamarin.Android.Build.Tasks/.gitignore b/src/Xamarin.Android.Build.Tasks/.gitignore
index 1d5bc710589..62cccf88ea7 100644
--- a/src/Xamarin.Android.Build.Tasks/.gitignore
+++ b/src/Xamarin.Android.Build.Tasks/.gitignore
@@ -1,2 +1,4 @@
+/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.BundledVersions.props
+/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.SupportedPlatforms.props
/Xamarin.Android.Common.props
/Xamarin.Android.BuildInfo.txt
diff --git a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.targets b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.targets
index bf62c310729..a7a2728b28e 100644
--- a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.targets
+++ b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.targets
@@ -19,9 +19,13 @@
+
+ true
+
+
diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/XASdkProject.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/XASdkProject.cs
index 558e96c9ce3..aeb2593fdae 100644
--- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/XASdkProject.cs
+++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/XASdkProject.cs
@@ -73,7 +73,7 @@ public static void SaveGlobalJson (string directory)
public XASdkProject (string outputType = "Exe")
{
Sdk = $"Microsoft.Android.Sdk/{SdkVersion}";
- TargetFramework = "net5.0";
+ TargetFramework = "net5.0-android";
TargetSdkVersion = AndroidSdkResolver.GetMaxInstalledPlatform ().ToString ();
PackageName = PackageName ?? string.Format ("{0}.{0}", ProjectName);
diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/DotNetXamarinProject.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/DotNetXamarinProject.cs
index 3e21b996124..726400de3ee 100644
--- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/DotNetXamarinProject.cs
+++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/DotNetXamarinProject.cs
@@ -26,7 +26,7 @@ protected DotNetXamarinProject (string debugConfigurationName = "Debug", string
SetProperty ("AssemblyName", () => AssemblyName ?? ProjectName);
if (Builder.UseDotNet) {
- SetProperty ("TargetFramework", "net5.0");
+ SetProperty ("TargetFramework", "net5.0-android");
SetProperty ("EnableDefaultItems", "false");
SetProperty ("AppendTargetFrameworkToOutputPath", "false");
SetProperty ("AppendRuntimeIdentifierToOutputPath", "false");
diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Build.Tasks.targets b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Build.Tasks.targets
index c99302bdce5..6493f9f5b7f 100644
--- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Build.Tasks.targets
+++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Build.Tasks.targets
@@ -1,6 +1,7 @@
+
@@ -10,6 +11,10 @@
<_SharedRuntimeBuildPath Condition=" '$(_SharedRuntimeBuildPath)' == '' ">$(XAInstallPrefix)xbuild-frameworks\MonoAndroid\
<_GeneratedProfileClass>$(MSBuildThisFileDirectory)$(IntermediateOutputPath)Profile.g.cs
+
+ $(ResolveReferencesDependsOn);
+ _GenerateSupportedPlatforms;
+
_CopyNDKTools;
_GenerateXACommonProps;
@@ -266,6 +271,21 @@
Replacements="@PACKAGE_VERSION@=$(ProductVersion);@PACKAGE_VERSION_BUILD@=$(XAVersionCommitCount);@NDK_ARMEABI_V7_API@=$(AndroidNdkApiLevel_ArmV7a);@NDK_ARM64_V8A_API@=$(AndroidNdkApiLevel_ArmV8a);@NDK_X86_API@=$(AndroidNdkApiLevel_X86);@NDK_X86_64_API@=$(AndroidNdkApiLevel_X86_64);@BUNDLETOOL_VERSION@=$(XABundleToolVersion)">
+
+
+ <_AndroidApiInfo Include="$(XAInstallPrefix)xbuild-frameworks\MonoAndroid\*\AndroidApiInfo.xml" />
+
+
+
+
+
- net5.0
+ net5.0-android
Xamarin.Android.Tests.CodeBehindBuildTests
Exe
True
diff --git a/tests/CodeBehind/CommonSampleLibrary/CommonSampleLibraryDotNet.csproj b/tests/CodeBehind/CommonSampleLibrary/CommonSampleLibraryDotNet.csproj
index 77123a4abb2..7b6fc6109b3 100644
--- a/tests/CodeBehind/CommonSampleLibrary/CommonSampleLibraryDotNet.csproj
+++ b/tests/CodeBehind/CommonSampleLibrary/CommonSampleLibraryDotNet.csproj
@@ -1,6 +1,6 @@
- net5.0
+ net5.0-android
CommonSampleLibrary
CommonSampleLibrary
false