dotnet / sdk

Core functionality needed to create .NET Core projects, that is shared between Visual Studio and CLI
https://dot.net/core
MIT License
2.68k stars 1.06k forks source link

Workloads are broken on Fedora 40 #44082

Open atrauzzi opened 4 hours ago

atrauzzi commented 4 hours ago

I've just updated my system and it looks like I just got the latest .403 of dotnet 8. I install dotnet from the official Microsoft yum repository.

All workloads are now broken.

Host:
  Version:      8.0.10
  Architecture: x64
  Commit:       81cabf2857
  RID:          linux-x64

.NET SDKs installed:
  8.0.403 [/usr/share/dotnet/sdk]

.NET runtimes installed:
  Microsoft.AspNetCore.App 8.0.10 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 8.0.10 [/usr/share/dotnet/shared/Microsoft.NETCore.App]

Other architectures found:
  None

Environment variables:
  Not set

global.json file:
  Not found

Learn more:
  https://aka.ms/dotnet/info

Download .NET:
  https://aka.ms/dotnet/download

❯ dotnet workload update
Unhandled exception: System.InvalidOperationException: No workload set information found in: /usr/share/dotnet/sdk-manifests/8.0.100/workloadsets/8.0.402-baseline.24467.1
   at Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadSet.FromWorkloadSetFolder(String path, String workloadSetVersion, SdkFeatureBand defaultFeatureBand)
   at Microsoft.NET.Sdk.WorkloadManifestReader.SdkDirectoryWorkloadManifestProvider.<GetAvailableWorkloadSetsInternal>g__AddWorkloadSetsForFeatureBand|27_0(Dictionary`2 availableWorkloadSets, String featureBandDirectory)
   at Microsoft.NET.Sdk.WorkloadManifestReader.SdkDirectoryWorkloadManifestProvider.GetAvailableWorkloadSetsInternal(Nullable`1 workloadSetFeatureBand)
   at Microsoft.NET.Sdk.WorkloadManifestReader.SdkDirectoryWorkloadManifestProvider.RefreshWorkloadManifests()
   at Microsoft.NET.Sdk.WorkloadManifestReader.SdkDirectoryWorkloadManifestProvider..ctor(String sdkRootPath, String sdkVersion, Func`2 getEnvironmentVariable, String userProfileDir, String globalJsonPath, String workloadSetVersion)
   at Microsoft.NET.Sdk.WorkloadManifestReader.SdkDirectoryWorkloadManifestProvider..ctor(String sdkRootPath, String sdkVersion, String userProfileDir, String globalJsonPath)
   at Microsoft.DotNet.Workloads.Workload.Install.WorkloadResolverFactory.Create(String globalJsonStartDir)
   at Microsoft.DotNet.Workloads.Workload.InstallingWorkloadCommand..ctor(ParseResult parseResult, IReporter reporter, IWorkloadResolverFactory workloadResolverFactory, IInstaller workloadInstaller, INuGetPackageDownloader nugetPackageDownloader, IWorkloadManifestUpdater workloadManifestUpdater, String tempDirPath)
   at Microsoft.DotNet.Workloads.Workload.Update.WorkloadUpdateCommand..ctor(ParseResult parseResult, IReporter reporter, IWorkloadResolverFactory workloadResolverFactory, IInstaller workloadInstaller, INuGetPackageDownloader nugetPackageDownloader, IWorkloadManifestUpdater workloadManifestUpdater, String tempDirPath)
   at Microsoft.DotNet.Cli.WorkloadUpdateCommandParser.<>c.<ConstructCommand>b__6_0(ParseResult parseResult)
   at System.CommandLine.Invocation.InvocationPipeline.Invoke(ParseResult parseResult)
   at Microsoft.DotNet.Cli.Program.ProcessArgs(String[] args, TimeSpan startupTime, ITelemetry telemetryClient)
atrauzzi commented 3 hours ago

I'm not sure how, but I'm also now getting:

An issue was encountered verifying workloads. For more information, run "dotnet workload update".
Unhandled exception: System.InvalidOperationException: No workload set information found in: /usr/share/dotnet/sdk-manifests/8.0.100/workloadsets/8.0.402-baseline.24467.1
   at Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadSet.FromWorkloadSetFolder(String path, String workloadSetVersion, SdkFeatureBand defaultFeatureBand)
   at Microsoft.NET.Sdk.WorkloadManifestReader.SdkDirectoryWorkloadManifestProvider.<GetAvailableWorkloadSetsInternal>g__AddWorkloadSetsForFeatureBand|27_0(Dictionary`2 availableWorkloadSets, String featureBandDirectory)
   at Microsoft.NET.Sdk.WorkloadManifestReader.SdkDirectoryWorkloadManifestProvider.GetAvailableWorkloadSetsInternal(Nullable`1 workloadSetFeatureBand)
   at Microsoft.NET.Sdk.WorkloadManifestReader.SdkDirectoryWorkloadManifestProvider.RefreshWorkloadManifests()
   at Microsoft.NET.Sdk.WorkloadManifestReader.SdkDirectoryWorkloadManifestProvider..ctor(String sdkRootPath, String sdkVersion, Func`2 getEnvironmentVariable, String userProfileDir, String globalJsonPath, String workloadSetVersion)
   at Microsoft.NET.Sdk.WorkloadManifestReader.SdkDirectoryWorkloadManifestProvider..ctor(String sdkRootPath, String sdkVersion, String userProfileDir, String globalJsonPath)
   at Microsoft.DotNet.Workloads.Workload.Install.WorkloadResolverFactory.Create(String globalJsonStartDir)
   at Microsoft.DotNet.Workloads.Workload.InstallingWorkloadCommand..ctor(ParseResult parseResult, IReporter reporter, IWorkloadResolverFactory workloadResolverFactory, IInstaller workloadInstaller, INuGetPackageDownloader nugetPackageDownloader, IWorkloadManifestUpdater workloadManifestUpdater, String tempDirPath)
   at Microsoft.DotNet.Workloads.Workload.Update.WorkloadUpdateCommand..ctor(ParseResult parseResult, IReporter reporter, IWorkloadResolverFactory workloadResolverFactory, IInstaller workloadInstaller, INuGetPackageDownloader nugetPackageDownloader, IWorkloadManifestUpdater workloadManifestUpdater, String tempDirPath)
   at Microsoft.DotNet.Cli.WorkloadUpdateCommandParser.<>c.<ConstructCommand>b__6_0(ParseResult parseResult)
   at System.CommandLine.Invocation.InvocationPipeline.Invoke(ParseResult parseResult)
   at Microsoft.DotNet.Cli.Program.ProcessArgs(String[] args, TimeSpan startupTime, ITelemetry telemetryClient)
atrauzzi commented 3 hours ago

It appears that the following two subdirectories:

were empty in /usr/share/dotnet/sdk-manifests/8.0.100/workloadsets.

When I removed the two empty directories, that might have jogged things forward?