xamarin / Xamarin.Legacy.Sdk

Starting from a .NET 6 project, adds the ability to target legacy Xamarin target frameworks such as monoandroid11.0 or xamarin.ios10. *Not fully supported*
MIT License
35 stars 6 forks source link

Add support for .NET 6 & 7 Android workloads #41

Closed jonathanpeppers closed 2 years ago

jonathanpeppers commented 2 years ago

Context: https://github.com/xamarin/xamarin-android/pull/7261#discussion_r954477870

To make .NET 6 builds work from a .NET 7 SDK, we are changing:

Microsoft.Android.Sdk

To:

Microsoft.Android.Sdk.net6
Microsoft.Android.Sdk.net7

To deal with this in Xamarin.Legacy.Sdk, by default it will check for:

<!--
  if we are not .NET 7 use .NET 6, so legacy or net6.0 will import
  !$([MSBuild]::VersionEquals($(TargetFrameworkVersion), '7.0'))
-->
<Import Sdk="Microsoft.Android.Sdk.net6" ... />
<!--
  import .NET 7 if we are .NET 7
  $([MSBuild]::VersionEquals($(TargetFrameworkVersion), '7.0'))
-->
<Import Sdk="Microsoft.Android.Sdk.net7" ... />

To get the old behavior, you can set:

<UseMicrosoftAndroidSdk>true</UseMicrosoftAndroidSdk>

Or to explicitly select, you can set one of:

<UseMicrosoftAndroidSdkNet6>true</UseMicrosoftAndroidSdkNet6>
<UseMicrosoftAndroidSdkNet7>true</UseMicrosoftAndroidSdkNet7>

In a future change, we can make .NET 7 the default, but likely only after it is released GA.

jonathanpeppers commented 2 years ago

I'm going to ignore the GitHub actions failure for now:

/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Mac/Xamarin.Shared.targets(1425,3): error : Info.plist not found. 

It must be something about an updated Xamarin.Mac?