Description
Description
As seen here: dotnet/android#7451
It appears that building a net7.0-android
project with a .NET 8 SDK skips this import:
<!-- ======== C:\a\_work\1\s\xamarin-android\bin\Release\dotnet\sdk-manifests\8.0.200\microsoft.net.workload.mono.toolchain.net7\WorkloadManifest.targets ======= -->
<Project>
<Import Condition="'$(TargetsNet7)' == 'true' and '$(RunAOTCompilation)' == 'true' and '$(UsingBrowserRuntimeWorkload)' == 'true'" Project="Sdk.props" Sdk="Microsoft.NET.Runtime.MonoAOTCompiler.Task.net7" />
And then a Release build with AOT happens to work, because we have these imports as a fallback:
(We're wanting to remove these imports from .NET 8, and stop supporting the $(AotAssemblies)
brought forward from Xamarin.Android)
The end result is several build warnings, such as:
Warnings
C:\a\_work\1\s\xamarin-android\bin\Release\dotnet\packs\Microsoft.Android.Sdk.Windows\33.0.1\targets\Microsoft.Android.Sdk.Aot.targets(27,5): warning MSB4011: "C:\a\_work\1\s\xamarin-android\bin\Release\dotnet\packs\Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-x86\8.0.0-alpha.1.22507.5\Sdk\Sdk.props" cannot be imported again. It was already imported at "C:\a\_work\1\s\xamarin-android\bin\Release\dotnet\sdk-manifests\8.0.200\microsoft.net.workload.mono.toolchain.net7\WorkloadManifest.targets (9,9)". This is most likely a build authoring error. This subsequent import will be ignored. [C:\a\_work\1\a\TestRelease\10-22_07.31.58\temp\DotNetPublishTrue[net7.0 android 33]\UnnamedProject.csproj]
C:\a\_work\1\s\xamarin-android\bin\Release\dotnet\packs\Microsoft.Android.Sdk.Windows\33.0.1\targets\Microsoft.Android.Sdk.Aot.targets(28,5): warning MSB4011: "C:\a\_work\1\s\xamarin-android\bin\Release\dotnet\packs\Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-x64\8.0.0-alpha.1.22507.5\Sdk\Sdk.props" cannot be imported again. It was already imported at "C:\a\_work\1\s\xamarin-android\bin\Release\dotnet\sdk-manifests\8.0.200\microsoft.net.workload.mono.toolchain.net7\WorkloadManifest.targets (10,9)". This is most likely a build authoring error. This subsequent import will be ignored. [C:\a\_work\1\a\TestRelease\10-22_07.31.58\temp\DotNetPublishTrue[net7.0 android 33]\UnnamedProject.csproj]
C:\a\_work\1\s\xamarin-android\bin\Release\dotnet\packs\Microsoft.Android.Sdk.Windows\33.0.1\targets\Microsoft.Android.Sdk.Aot.targets(29,5): warning MSB4011: "C:\a\_work\1\s\xamarin-android\bin\Release\dotnet\packs\Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-arm\8.0.0-alpha.1.22507.5\Sdk\Sdk.props" cannot be imported again. It was already imported at "C:\a\_work\1\s\xamarin-android\bin\Release\dotnet\sdk-manifests\8.0.200\microsoft.net.workload.mono.toolchain.net7\WorkloadManifest.targets (11,9)". This is most likely a build authoring error. This subsequent import will be ignored. [C:\a\_work\1\a\TestRelease\10-22_07.31.58\temp\DotNetPublishTrue[net7.0 android 33]\UnnamedProject.csproj]
C:\a\_work\1\s\xamarin-android\bin\Release\dotnet\packs\Microsoft.Android.Sdk.Windows\33.0.1\targets\Microsoft.Android.Sdk.Aot.targets(30,5): warning MSB4011: "C:\a\_work\1\s\xamarin-android\bin\Release\dotnet\packs\Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-arm64\8.0.0-alpha.1.22507.5\Sdk\Sdk.props" cannot be imported again. It was already imported at "C:\a\_work\1\s\xamarin-android\bin\Release\dotnet\sdk-manifests\8.0.200\microsoft.net.workload.mono.toolchain.net7\WorkloadManifest.targets (12,9)". This is most likely a build authoring error. This subsequent import will be ignored. [C:\a\_work\1\a\TestRelease\10-22_07.31.58\temp\DotNetPublishTrue[net7.0 android 33]\UnnamedProject.csproj]
But I think the core problem might be $(UsingBrowserRuntimeWorkload)
isn't set?
Reproduction Steps
- Install .NET 8 and the Android workload
dotnet new android
, then change TFM tonet7.0-android
dotnet build -c Release -bl
See the warnings in the build log.
Actual behavior
Building net7.0-android
apps with the .NET 8 SDK emits build warnings.
Expected behavior
Building net7.0-android
apps with the .NET 8 SDK should have no build warnings.
Regression?
It works to multitarget .NET 7 SDK, building net6.0-android apps, so yes?
Known Workarounds
Targeting net8.0-android
and net6.0-android
with the .NET 8 SDK appear to work.
Configuration
.NET SDK 8.0.200-alpha.1.22511.1
.NET runtime 8.0.0-alpha.1.22507.5
Other information
.binlog
: dotnet8-7-multitargeting.zip