sdk
sdk copied to clipboard
Fix userlocal
Fixes #41420 and #41726
This attempts to find everywhere that we currently assume not-userlocal (where it's supported) and changes it to respect userlocal if specified.
As far as testing, I tried to do dotnet workload update with an SDK without this update, and it broke. I then tried it with these changes, and it succeeded.
I'm not very knowledgeable about what scenarios I should target. I'll keep testing things I can think of, but do either of you have a suggestion on where to focus my testing energy @baronfel @tmds?
It looks like the two changes are in the main dotnet.dll and the resolver dll, right? So it could be a viable test to
- get an Ubuntu or Red Hat WSL instance
- install an 8.x sdk from distro sources
- drop newly-built patched dlls onto that install
- test workload install/update?
Conceptually, it worries me how many distinct places you had to touch to fix this. It feels like we need some abstraction/mediator that we can ask for what this path should be to ensure that no code has the wrong idea.
Conceptually, it worries me how many distinct places you had to touch to fix this. It feels like we need some abstraction/mediator that we can ask for what this path should be to ensure that no code has the wrong idea.
I think this is an excellent point. What makes this hard is that all the load-bearing changes are pretty clearly in one of three buckets: related to the install state, related to workload sets, or related to garbage collection, and for the first two cases, at least, even if something perfect existed, I wouldn't have known to reference it. There are a few rare cases in which we really do want the not-userlocal dotnet path regardless, notably as a fallback path in the resolver, so we can't just fully replace dotnetPath with dotnetOrUserLocalPath...
It feels like we need some abstraction/mediator that we can ask for what this path should be to ensure that no code has the wrong idea.
simplification idea: remove dotnetPath argument from WorkloadInfoHelper and directly call CliFolderPathCalculatorCore.GetDotnetHomePath() for !IsUserLocal when initializing WorkloadInfoHelper.DotnetPath. it is still going through a wrapper but less fragmented in comparison.
Hold for the workload set PR but this looks good otherwise
What I did to test this version:
- Created userlocal file at the correct location
- Tried
dotnet workload update--> failed because I had an install state referencing a nonexistent workload set in my user directory (good) - Deleted that install state
- dotnet workload update --> succeeded
- dotnet workload list (none installed)
- dotnet workload install wasm-tools --> Workload ID wasm-tools is not recognized (?)
- dotnet workload search (found test workloads)
- dotnet workload install microsoft-net-sdk-testworkload (succeeded)
- dotnet workload list (correct)
- dotnet workload update (succeeded)
This is a blocker for us. We use nix flakes on macOS, as devs can just run nix develop and start coding. As our devs often come from a Windows or Linux background, this allows them to efficiently work on iOS apps without having to follow complex guides to set up their dev system. This is especially helpful when working on different projects in various stacks and with specific requirements/dependencies.
In addition, it seems harmful from a security perspective to require root permissions just to install workloads. userlocal nicely solves this problem.
It would be great if this fix is backported into the next Net8 SDK release.
Some additional context - Nix can be used a package manager on Linux and macOS, and in either case uses our tarball releases to drive the installation: https://github.com/NixOS/nixpkgs/blob/cf05eeada35e122770c5c14add958790fcfcbef5/pkgs/development/compilers/dotnet/versions/8.0.nix#L156
this is still failing on nixos with dotnet-sdk 9.0.100-preview.7.24407.12
reproduction repository is still here
> dotnet --info
.NET SDK:
Version: 9.0.100-preview.7.24407.12
Commit: d672b8a045
Workload version: 9.0.100-manifests.ad7d8b9c
MSBuild version: 17.12.0-preview-24374-02+48e81c6f1
Runtime Environment:
OS Name: nixos
OS Version: 24.11
OS Platform: Linux
RID: linux-x64
Base Path: /nix/store/k3pwldrpihar4j8d4i7c464nzdczbk5b-dotnet-sdk-9.0.100-preview.7.24407.12/sdk/9.0.100-preview.7.24407.12/
.NET workloads installed:
Configured to use loose manifests when installing new manifests.
[maui-android]
Installation Source: SDK 9.0.100-preview.7
Manifest Version: 9.0.0-preview.7.24407.4/9.0.100-preview.7
Manifest Path: /home/a/.dotnet/sdk-manifests/9.0.100-preview.7/microsoft.net.sdk.maui/9.0.0-preview.7.24407.4/WorkloadManifest.json
Install Type: FileBased
Host:
Version: 9.0.0-preview.7.24405.7
Architecture: x64
Commit: static
.NET SDKs installed:
9.0.100-preview.7.24407.12 [/nix/store/iciqfvy2ppdyxiz7n1lxkns04k7m5294-dotnet-core-combined/sdk]
.NET runtimes installed:
Microsoft.AspNetCore.App 9.0.0-preview.7.24406.2 [/nix/store/iciqfvy2ppdyxiz7n1lxkns04k7m5294-dotnet-core-combined/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 9.0.0-preview.7.24405.7 [/nix/store/iciqfvy2ppdyxiz7n1lxkns04k7m5294-dotnet-core-combined/shared/Microsoft.NETCore.App]
Other architectures found:
None
Environment variables:
DOTNET_ROOT [/nix/store/iciqfvy2ppdyxiz7n1lxkns04k7m5294-dotnet-core-combined]
global.json file:
Not found
Learn more:
https://aka.ms/dotnet/info
Download .NET:
https://aka.ms/dotnet/download
> ls -al /nix/store/iciqfvy2ppdyxiz7n1lxkns04k7m5294-dotnet-core-combined/metadata/workloads/9.0.100/userlocal
.r--r--r-- 0 root 31 Dec 1969 /nix/store/iciqfvy2ppdyxiz7n1lxkns04k7m5294-dotnet-core-combined/metadata/workloads/9.0.100/userlocal
> dotnet workload update
Skipping NuGet package signature verification.
Skipping NuGet package signature verification.
Skipping NuGet package signature verification.
Skipping NuGet package signature verification.
Skipping NuGet package signature verification.
Skipping NuGet package signature verification.
Skipping NuGet package signature verification.
Skipping NuGet package signature verification.
Updated advertising manifest microsoft.net.sdk.tvos.
Updated advertising manifest microsoft.net.workload.mono.toolchain.net6.
Updated advertising manifest microsoft.net.workload.mono.toolchain.net7.
Updated advertising manifest microsoft.net.sdk.android.
Updated advertising manifest microsoft.net.workload.mono.toolchain.current.
Updated advertising manifest microsoft.net.workload.emscripten.current.
Updated advertising manifest microsoft.net.workload.emscripten.net8.
Updated advertising manifest microsoft.net.workload.emscripten.net6.
Updated advertising manifest microsoft.net.workload.emscripten.net7.
Updated advertising manifest microsoft.net.sdk.aspire.
Updated advertising manifest microsoft.net.sdk.macos.
Updated advertising manifest microsoft.net.sdk.maccatalyst.
Updated advertising manifest microsoft.net.sdk.maui.
Updated advertising manifest microsoft.net.sdk.ios.
Updated advertising manifest microsoft.net.workload.mono.toolchain.net8.
Installing workload manifest microsoft.net.sdk.aspire version 8.1.0...
Workload installation failed. Rolling back installed packs...
Workload update failed: Read-only file system : '/nix/store/iciqfvy2ppdyxiz7n1lxkns04k7m5294-dotnet-core-combined/metadata/workloads/X64'
> dotnet workload list
Installed Workload Id Manifest Version Installation Source
-----------------------------------------------------------------------------------------------
maui-android 9.0.0-preview.7.24407.4/9.0.100-preview.7 SDK 9.0.100-preview.7
Use `dotnet workload search` to find additional workloads to install.
> dotnet restore
Determining projects to restore...
/nix/store/k3pwldrpihar4j8d4i7c464nzdczbk5b-dotnet-sdk-9.0.100-preview.7.24407.12/sdk/9.0.100-preview.7.24407.12/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.ImportWorkloads.targets(38,5): error NETSDK1147: To build this project, the following workloads must be installed: maui-android [/home/a/projects/maui-on-nix/src/MauiOnNix.csproj::TargetFramework=net8.0-android]
/nix/store/k3pwldrpihar4j8d4i7c464nzdczbk5b-dotnet-sdk-9.0.100-preview.7.24407.12/sdk/9.0.100-preview.7.24407.12/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.ImportWorkloads.targets(38,5): error NETSDK1147: To install these workloads, run the following command: dotnet workload restore [/home/a/projects/maui-on-nix/src/MauiOnNix.csproj::TargetFramework=net8.0-android]
because it was not included in p7. it was included in rc1.
> dotnet --info
.NET SDK:
Version: 9.0.100-rc.1.24452.12
Commit: 81a714c6d3
Workload version: 9.0.100-manifests.2acaa684
MSBuild version: 17.12.0-preview-24422-09+d17ec720d
Runtime Environment:
OS Name: nixos
OS Version: 24.11
OS Platform: Linux
RID: linux-x64
Base Path: /nix/store/xrbswlskla2qi3hqf2j2543k1qwq10l0-dotnet-sdk-9.0.100-rc.1.24452.12/sdk/9.0.100-rc.1.24452.12/
.NET workloads installed:
Configured to use loose manifests when installing new manifests.
[maui-android]
Installation Source: SDK 9.0.100-rc.1
Manifest Version: 9.0.0-rc.1.24453.9/9.0.100-rc.1
Manifest Path: /home/a/.dotnet/sdk-manifests/9.0.100-rc.1/microsoft.net.sdk.maui/9.0.0-rc.1.24453.9/WorkloadManifest.json
Install Type: FileBased
Host:
Version: 9.0.0-rc.1.24431.7
Architecture: x64
Commit: static
.NET SDKs installed:
9.0.100-rc.1.24452.12 [/nix/store/s8b9hyrb5gdsam9nay59nxcz7k4jb2aj-dotnet-core-combined/sdk]
.NET runtimes installed:
Microsoft.AspNetCore.App 9.0.0-rc.1.24452.1 [/nix/store/s8b9hyrb5gdsam9nay59nxcz7k4jb2aj-dotnet-core-combined/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 9.0.0-rc.1.24431.7 [/nix/store/s8b9hyrb5gdsam9nay59nxcz7k4jb2aj-dotnet-core-combined/shared/Microsoft.NETCore.App]
Other architectures found:
None
Environment variables:
DOTNET_ROOT [/nix/store/s8b9hyrb5gdsam9nay59nxcz7k4jb2aj-dotnet-core-combined]
global.json file:
Not found
Learn more:
https://aka.ms/dotnet/info
Download .NET:
https://aka.ms/dotnet/download
> dotnet workload restore
Installing workloads: maui-android
Skipping NuGet package signature verification.
Installing workload manifest microsoft.net.sdk.aspire version 8.2.1...
Workload(s) 'maui-android' are already installed.
Installing pack Microsoft.AspNetCore.Components.WebView.Maui version 9.0.0-rc.1.24453.9...
Pack Microsoft.AspNetCore.Components.WebView.Maui version 9.0.0-rc.1.24453.9 is already installed.
Writing workload pack installation record for Microsoft.AspNetCore.Components.WebView.Maui version 9.0.0-rc.1.24453.9...
Installing pack Microsoft.Maui.Sdk version 9.0.0-rc.1.24453.9...
Pack Microsoft.Maui.Sdk version 9.0.0-rc.1.24453.9 is already installed.
Writing workload pack installation record for Microsoft.Maui.Sdk version 9.0.0-rc.1.24453.9...
Installing pack Microsoft.Maui.Sdk version 8.0.82...
Pack Microsoft.Maui.Sdk version 8.0.82 is already installed.
Writing workload pack installation record for Microsoft.Maui.Sdk version 8.0.82...
Installing pack Microsoft.Maui.Graphics version 9.0.0-rc.1.24453.9...
Pack Microsoft.Maui.Graphics version 9.0.0-rc.1.24453.9 is already installed.
Writing workload pack installation record for Microsoft.Maui.Graphics version 9.0.0-rc.1.24453.9...
Installing pack Microsoft.Maui.Resizetizer version 9.0.0-rc.1.24453.9...
Pack Microsoft.Maui.Resizetizer version 9.0.0-rc.1.24453.9 is already installed.
Writing workload pack installation record for Microsoft.Maui.Resizetizer version 9.0.0-rc.1.24453.9...
Installing pack Microsoft.Maui.Templates.net9 version 9.0.0-rc.1.24453.9...
Pack Microsoft.Maui.Templates.net9 version 9.0.0-rc.1.24453.9 is already installed.
Writing workload pack installation record for Microsoft.Maui.Templates.net9 version 9.0.0-rc.1.24453.9...
Installing pack Microsoft.Maui.Templates.net8 version 8.0.82...
Pack Microsoft.Maui.Templates.net8 version 8.0.82 is already installed.
Writing workload pack installation record for Microsoft.Maui.Templates.net8 version 8.0.82...
Installing pack Microsoft.Maui.Core version 9.0.0-rc.1.24453.9...
Pack Microsoft.Maui.Core version 9.0.0-rc.1.24453.9 is already installed.
Writing workload pack installation record for Microsoft.Maui.Core version 9.0.0-rc.1.24453.9...
Installing pack Microsoft.Maui.Controls version 9.0.0-rc.1.24453.9...
Pack Microsoft.Maui.Controls version 9.0.0-rc.1.24453.9 is already installed.
Writing workload pack installation record for Microsoft.Maui.Controls version 9.0.0-rc.1.24453.9...
Installing pack Microsoft.Maui.Controls.Build.Tasks version 9.0.0-rc.1.24453.9...
Pack Microsoft.Maui.Controls.Build.Tasks version 9.0.0-rc.1.24453.9 is already installed.
Writing workload pack installation record for Microsoft.Maui.Controls.Build.Tasks version 9.0.0-rc.1.24453.9...
Installing pack Microsoft.Maui.Controls.Core version 9.0.0-rc.1.24453.9...
Pack Microsoft.Maui.Controls.Core version 9.0.0-rc.1.24453.9 is already installed.
Writing workload pack installation record for Microsoft.Maui.Controls.Core version 9.0.0-rc.1.24453.9...
Installing pack Microsoft.Maui.Controls.Xaml version 9.0.0-rc.1.24453.9...
Pack Microsoft.Maui.Controls.Xaml version 9.0.0-rc.1.24453.9 is already installed.
Writing workload pack installation record for Microsoft.Maui.Controls.Xaml version 9.0.0-rc.1.24453.9...
Installing pack Microsoft.Maui.Controls.Compatibility version 9.0.0-rc.1.24453.9...
Pack Microsoft.Maui.Controls.Compatibility version 9.0.0-rc.1.24453.9 is already installed.
Writing workload pack installation record for Microsoft.Maui.Controls.Compatibility version 9.0.0-rc.1.24453.9...
Installing pack Microsoft.Maui.Essentials version 9.0.0-rc.1.24453.9...
Pack Microsoft.Maui.Essentials version 9.0.0-rc.1.24453.9 is already installed.
Writing workload pack installation record for Microsoft.Maui.Essentials version 9.0.0-rc.1.24453.9...
Installing pack Microsoft.Android.Sdk.Linux version 35.0.0-rc.1.80...
Pack Microsoft.Android.Sdk.Linux version 35.0.0-rc.1.80 is already installed.
Writing workload pack installation record for Microsoft.Android.Sdk.Linux version 35.0.0-rc.1.80...
Installing pack Microsoft.Android.Sdk.Linux version 34.0.138...
Pack Microsoft.Android.Sdk.Linux version 34.0.138 is already installed.
Writing workload pack installation record for Microsoft.Android.Sdk.Linux version 34.0.138...
Installing pack Microsoft.Android.Ref.35 version 35.0.0-rc.1.80...
Pack Microsoft.Android.Ref.35 version 35.0.0-rc.1.80 is already installed.
Writing workload pack installation record for Microsoft.Android.Ref.35 version 35.0.0-rc.1.80...
Installing pack Microsoft.Android.Runtime.35.android-arm version 35.0.0-rc.1.80...
Pack Microsoft.Android.Runtime.35.android-arm version 35.0.0-rc.1.80 is already installed.
Writing workload pack installation record for Microsoft.Android.Runtime.35.android-arm version 35.0.0-rc.1.80...
Installing pack Microsoft.Android.Runtime.35.android-arm64 version 35.0.0-rc.1.80...
Pack Microsoft.Android.Runtime.35.android-arm64 version 35.0.0-rc.1.80 is already installed.
Writing workload pack installation record for Microsoft.Android.Runtime.35.android-arm64 version 35.0.0-rc.1.80...
Installing pack Microsoft.Android.Runtime.35.android-x86 version 35.0.0-rc.1.80...
Pack Microsoft.Android.Runtime.35.android-x86 version 35.0.0-rc.1.80 is already installed.
Writing workload pack installation record for Microsoft.Android.Runtime.35.android-x86 version 35.0.0-rc.1.80...
Installing pack Microsoft.Android.Runtime.35.android-x64 version 35.0.0-rc.1.80...
Pack Microsoft.Android.Runtime.35.android-x64 version 35.0.0-rc.1.80 is already installed.
Writing workload pack installation record for Microsoft.Android.Runtime.35.android-x64 version 35.0.0-rc.1.80...
Installing pack Microsoft.Android.Templates version 35.0.0-rc.1.80...
Pack Microsoft.Android.Templates version 35.0.0-rc.1.80 is already installed.
Writing workload pack installation record for Microsoft.Android.Templates version 35.0.0-rc.1.80...
Installing pack Microsoft.NETCore.App.Runtime.Mono.android-arm version 8.0.8...
Pack Microsoft.NETCore.App.Runtime.Mono.android-arm version 8.0.8 is already installed.
Writing workload pack installation record for Microsoft.NETCore.App.Runtime.Mono.android-arm version 8.0.8...
Installing pack Microsoft.NETCore.App.Runtime.Mono.android-arm64 version 8.0.8...
Pack Microsoft.NETCore.App.Runtime.Mono.android-arm64 version 8.0.8 is already installed.
Writing workload pack installation record for Microsoft.NETCore.App.Runtime.Mono.android-arm64 version 8.0.8...
Installing pack Microsoft.NETCore.App.Runtime.Mono.android-x64 version 8.0.8...
Pack Microsoft.NETCore.App.Runtime.Mono.android-x64 version 8.0.8 is already installed.
Writing workload pack installation record for Microsoft.NETCore.App.Runtime.Mono.android-x64 version 8.0.8...
Installing pack Microsoft.NETCore.App.Runtime.Mono.android-x86 version 8.0.8...
Pack Microsoft.NETCore.App.Runtime.Mono.android-x86 version 8.0.8 is already installed.
Writing workload pack installation record for Microsoft.NETCore.App.Runtime.Mono.android-x86 version 8.0.8...
Installing pack Microsoft.NET.Runtime.MonoAOTCompiler.Task version 8.0.8...
Pack Microsoft.NET.Runtime.MonoAOTCompiler.Task version 8.0.8 is already installed.
Writing workload pack installation record for Microsoft.NET.Runtime.MonoAOTCompiler.Task version 8.0.8...
Installing pack Microsoft.NET.Runtime.MonoTargets.Sdk version 8.0.8...
Pack Microsoft.NET.Runtime.MonoTargets.Sdk version 8.0.8 is already installed.
Writing workload pack installation record for Microsoft.NET.Runtime.MonoTargets.Sdk version 8.0.8...
Installing pack Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-x86 version 8.0.8...
Pack Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-x86 version 8.0.8 is already installed.
Writing workload pack installation record for Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-x86 version 8.0.8...
Installing pack Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-x64 version 8.0.8...
Pack Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-x64 version 8.0.8 is already installed.
Writing workload pack installation record for Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-x64 version 8.0.8...
Installing pack Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-arm version 8.0.8...
Pack Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-arm version 8.0.8 is already installed.
Writing workload pack installation record for Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-arm version 8.0.8...
Installing pack Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-arm64 version 8.0.8...
Pack Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-arm64 version 8.0.8 is already installed.
Writing workload pack installation record for Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-arm64 version 8.0.8...
Installing pack Microsoft.NETCore.App.Runtime.Mono.android-arm version 9.0.0-rc.1.24431.7...
Pack Microsoft.NETCore.App.Runtime.Mono.android-arm version 9.0.0-rc.1.24431.7 is already installed.
Writing workload pack installation record for Microsoft.NETCore.App.Runtime.Mono.android-arm version 9.0.0-rc.1.24431.7...
Installing pack Microsoft.NETCore.App.Runtime.Mono.android-arm64 version 9.0.0-rc.1.24431.7...
Pack Microsoft.NETCore.App.Runtime.Mono.android-arm64 version 9.0.0-rc.1.24431.7 is already installed.
Writing workload pack installation record for Microsoft.NETCore.App.Runtime.Mono.android-arm64 version 9.0.0-rc.1.24431.7...
Installing pack Microsoft.NETCore.App.Runtime.Mono.android-x64 version 9.0.0-rc.1.24431.7...
Pack Microsoft.NETCore.App.Runtime.Mono.android-x64 version 9.0.0-rc.1.24431.7 is already installed.
Writing workload pack installation record for Microsoft.NETCore.App.Runtime.Mono.android-x64 version 9.0.0-rc.1.24431.7...
Installing pack Microsoft.NETCore.App.Runtime.Mono.android-x86 version 9.0.0-rc.1.24431.7...
Pack Microsoft.NETCore.App.Runtime.Mono.android-x86 version 9.0.0-rc.1.24431.7 is already installed.
Writing workload pack installation record for Microsoft.NETCore.App.Runtime.Mono.android-x86 version 9.0.0-rc.1.24431.7...
Installing pack Microsoft.NET.Runtime.MonoAOTCompiler.Task version 9.0.0-rc.1.24431.7...
Pack Microsoft.NET.Runtime.MonoAOTCompiler.Task version 9.0.0-rc.1.24431.7 is already installed.
Writing workload pack installation record for Microsoft.NET.Runtime.MonoAOTCompiler.Task version 9.0.0-rc.1.24431.7...
Installing pack Microsoft.NET.Runtime.MonoTargets.Sdk version 9.0.0-rc.1.24431.7...
Pack Microsoft.NET.Runtime.MonoTargets.Sdk version 9.0.0-rc.1.24431.7 is already installed.
Writing workload pack installation record for Microsoft.NET.Runtime.MonoTargets.Sdk version 9.0.0-rc.1.24431.7...
Installing pack Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-x86 version 9.0.0-rc.1.24431.7...
Pack Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-x86 version 9.0.0-rc.1.24431.7 is already installed.
Writing workload pack installation record for Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-x86 version 9.0.0-rc.1.24431.7...
Installing pack Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-x64 version 9.0.0-rc.1.24431.7...
Pack Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-x64 version 9.0.0-rc.1.24431.7 is already installed.
Writing workload pack installation record for Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-x64 version 9.0.0-rc.1.24431.7...
Installing pack Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-arm version 9.0.0-rc.1.24431.7...
Pack Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-arm version 9.0.0-rc.1.24431.7 is already installed.
Writing workload pack installation record for Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-arm version 9.0.0-rc.1.24431.7...
Installing pack Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-arm64 version 9.0.0-rc.1.24431.7...
Pack Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-arm64 version 9.0.0-rc.1.24431.7 is already installed.
Writing workload pack installation record for Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-arm64 version 9.0.0-rc.1.24431.7...
Garbage collecting for SDK feature band(s) 9.0.100-rc.1...
Uninstalling workload manifest microsoft.net.sdk.aspire version 8.2.1/8.0.100...
Successfully installed workload(s) .
> dotnet build
Determining projects to restore...
/nix/store/xrbswlskla2qi3hqf2j2543k1qwq10l0-dotnet-sdk-9.0.100-rc.1.24452.12/sdk/9.0.100-rc.1.24452.12/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.ImportWorkloads.targets(38,5): error NETSDK1147: To build this project, the following workloads must be installed: maui-android [/home/a/projects/maui-on-nix/src/MauiOnNix.csproj::TargetFramework=net8.0-android]
/nix/store/xrbswlskla2qi3hqf2j2543k1qwq10l0-dotnet-sdk-9.0.100-rc.1.24452.12/sdk/9.0.100-rc.1.24452.12/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.ImportWorkloads.targets(38,5): error NETSDK1147: To install these workloads, run the following command: dotnet workload restore [/home/a/projects/maui-on-nix/src/MauiOnNix.csproj::TargetFramework=net8.0-android]
Build FAILED.
/nix/store/xrbswlskla2qi3hqf2j2543k1qwq10l0-dotnet-sdk-9.0.100-rc.1.24452.12/sdk/9.0.100-rc.1.24452.12/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.ImportWorkloads.targets(38,5): error NETSDK1147: To build this project, the following workloads must be installed: maui-android [/home/a/projects/maui-on-nix/src/MauiOnNix.csproj::TargetFramework=net8.0-android]
/nix/store/xrbswlskla2qi3hqf2j2543k1qwq10l0-dotnet-sdk-9.0.100-rc.1.24452.12/sdk/9.0.100-rc.1.24452.12/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.ImportWorkloads.targets(38,5): error NETSDK1147: To install these workloads, run the following command: dotnet workload restore [/home/a/projects/maui-on-nix/src/MauiOnNix.csproj::TargetFramework=net8.0-android]
0 Warning(s)
1 Error(s)
Time Elapsed 00:00:00.41