installer icon indicating copy to clipboard operation
installer copied to clipboard

Recent dotnet SDKs fail on basic actions trying to find WorkloadManifest.json

Open roji opened this issue 4 years ago • 4 comments

Both 6.0.100-rtm.21504.1 and 6.0.100-rc.2.21501.10 seem to fail for basic actions, on Ubuntu 21.04 (installed via dotnet-install.sh). 6.0.100-rc.1.21463.6 works fine.

dotnet new console:

➜  p dotnet new console

Welcome to .NET 6.0!
---------------------
SDK Version: 6.0.100-rc.2.21501.10

Telemetry
---------
The .NET tools collect usage data in order to help us improve your experience. It is collected by Microsoft and shared with the community. You can opt-out of telemetry by setting the DOTNET_CLI_TELEMETRY_OPTOUT environment variable to '1' or 'true' using your favorite shell.

Read more about .NET CLI Tools telemetry: https://aka.ms/dotnet-cli-telemetry

----------------
Installed an ASP.NET Core HTTPS development certificate.
To trust the certificate run 'dotnet dev-certs https --trust' (Windows and macOS only).
Learn about HTTPS: https://aka.ms/dotnet-https
----------------
Write your first app: https://aka.ms/dotnet-hello-world
Find out what's new: https://aka.ms/dotnet-whats-new
Explore documentation: https://aka.ms/dotnet-docs
Report issues and find source on GitHub: https://github.com/dotnet/core
Use 'dotnet --help' to see available commands or visit: https://aka.ms/dotnet-cli
--------------------------------------------------------------------------------------
Could not find file '/tmp/p/WorkloadManifest.json'.
   at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter)
   at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String path, OpenFlags flags, Int32 mode)
   at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize)
   at System.IO.Strategies.OSFileStreamStrategy..ctor(String path, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize)
   at System.IO.Strategies.FileStreamHelpers.ChooseStrategy(FileStream fileStream, String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, Int64 preallocationSize)
   at System.IO.File.OpenRead(String path)
   at Microsoft.NET.Sdk.WorkloadManifestReader.SdkDirectoryWorkloadManifestProvider.<>c__DisplayClass7_0.<GetManifests>b__0()
   at Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadResolver.LoadManifestsFromProvider(IWorkloadManifestProvider manifestProvider)
   at Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadResolver.Create(IWorkloadManifestProvider manifestProvider, String dotnetRootPath, String sdkVersion, String userProfileDir)
   at Microsoft.DotNet.TemplateLocator.TemplateLocator.GetDotnetSdkTemplatePackages(String sdkVersion, String dotnetRootPath, String userProfileDir)
   at Microsoft.DotNet.Tools.New.OptionalWorkloadProvider.GetAllTemplatePackagesAsync(CancellationToken cancellationToken)
   at Microsoft.TemplateEngine.Edge.Settings.TemplatePackageManager.<>c__DisplayClass21_0.<EnsureProvidersLoaded>b__2()
   at System.Threading.Tasks.Task`1.InnerInvoke()
   at System.Threading.Tasks.Task.<>c.<.cctor>b__271_0(Object obj)
   at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
   at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location ---
   at Microsoft.TemplateEngine.Edge.Settings.TemplatePackageManager.GetTemplatePackagesAsync(Boolean force, CancellationToken cancellationToken)
   at Microsoft.TemplateEngine.Edge.Settings.TemplatePackageManager.UpdateTemplateCacheAsync(Boolean needsRebuild, CancellationToken cancellationToken)
   at Microsoft.TemplateEngine.Edge.Settings.TemplatePackageManager.GetTemplatesAsync(CancellationToken cancellationToken)
   at Microsoft.TemplateEngine.Cli.TemplateResolution.BaseTemplateResolver.GetTemplateGroupsAsync(CancellationToken cancellationToken)
   at Microsoft.TemplateEngine.Cli.TemplateResolution.InstantiateTemplateResolver.ResolveTemplatesAsync(INewCommandInput commandInput, String defaultLanguage, CancellationToken cancellationToken)
   at Microsoft.TemplateEngine.Cli.TemplateInvocationCoordinator.CoordinateInvocationAsync(INewCommandInput commandInput, CancellationToken cancellationToken)
   at Microsoft.TemplateEngine.Cli.New3Command.EnterTemplateManipulationFlowAsync(INewCommandInput commandInput)
   at Microsoft.TemplateEngine.Cli.New3Command.ExecuteAsync(INewCommandInput commandInput)
   at Microsoft.TemplateEngine.Cli.New3Command.ActualRun(String commandName, ITemplateEngineHost host, ITelemetryLogger telemetryLogger, New3Callbacks callbacks, String[] args, String hivePath)

dotnet restore:

➜  npgsql git:(main) dotnet restore
/home/roji/projects/npgsql/src/Npgsql/Npgsql.csproj : error MSB4242: SDK Resolver Failure: "The SDK resolver "Microsoft.DotNet.MSBuildWorkloadSdkResolver" failed while attempting to resolve the SDK "Microsoft.NET.Sdk". Exception: "System.IO.FileNotFoundException: Could not find file '/home/roji/projects/npgsql/WorkloadManifest.json'.
/home/roji/projects/npgsql/src/Npgsql/Npgsql.csproj : error MSB4242: File name: '/home/roji/projects/npgsql/WorkloadManifest.json'
/home/roji/projects/npgsql/src/Npgsql/Npgsql.csproj : error MSB4242:    at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter)
/home/roji/projects/npgsql/src/Npgsql/Npgsql.csproj : error MSB4242:    at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String path, OpenFlags flags, Int32 mode)
/home/roji/projects/npgsql/src/Npgsql/Npgsql.csproj : error MSB4242:    at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize)
/home/roji/projects/npgsql/src/Npgsql/Npgsql.csproj : error MSB4242:    at System.IO.Strategies.OSFileStreamStrategy..ctor(String path, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize)
/home/roji/projects/npgsql/src/Npgsql/Npgsql.csproj : error MSB4242:    at System.IO.Strategies.FileStreamHelpers.ChooseStrategy(FileStream fileStream, String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, Int64 preallocationSize)
/home/roji/projects/npgsql/src/Npgsql/Npgsql.csproj : error MSB4242:    at System.IO.File.OpenRead(String path)
/home/roji/projects/npgsql/src/Npgsql/Npgsql.csproj : error MSB4242:    at Microsoft.NET.Sdk.WorkloadManifestReader.SdkDirectoryWorkloadManifestProvider.<>c__DisplayClass7_0.<GetManifests>b__0()
/home/roji/projects/npgsql/src/Npgsql/Npgsql.csproj : error MSB4242:    at Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadResolver.LoadManifestsFromProvider(IWorkloadManifestProvider manifestProvider)
/home/roji/projects/npgsql/src/Npgsql/Npgsql.csproj : error MSB4242:    at Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadResolver.Create(IWorkloadManifestProvider manifestProvider, String dotnetRootPath, String sdkVersion, String userProfileDir)
/home/roji/projects/npgsql/src/Npgsql/Npgsql.csproj : error MSB4242:    at Microsoft.NET.Sdk.WorkloadMSBuildSdkResolver.CachingWorkloadResolver.Resolve(String sdkReferenceName, String dotnetRootPath, String sdkVersion, String userProfileDir)
/home/roji/projects/npgsql/src/Npgsql/Npgsql.csproj : error MSB4242:    at Microsoft.NET.Sdk.WorkloadMSBuildSdkResolver.WorkloadSdkResolver.Resolve(SdkReference sdkReference, SdkResolverContext resolverContext, SdkResultFactory factory)
/home/roji/projects/npgsql/src/Npgsql/Npgsql.csproj : error MSB4242:    at Microsoft.Build.BackEnd.SdkResolution.SdkResolverService.ResolveSdk(Int32 submissionId, SdkReference sdk, LoggingContext loggingContext, ElementLocation sdkReferenceLocation, String solutionPath, String projectPath, Boolean interactive, Boolean isRunningInVisualStudio)""

roji avatar Oct 04 '21 14:10 roji

I have had to add MSBuildEnableWorkloadResolver=false to my environment variables for quite some time. I have first hit this issue on August 30th (from my browser history), when I upgraded from 6.0.0-rc.1.21411.2 (judging by my NuGet package cache) to some version before 6.0.0-rc.2.21430.24 (by the same clue, September 3rd). I update to main branch builds only. I hope this helps in bisecting, if required.

andrew-boyarshin avatar Oct 06 '21 14:10 andrew-boyarshin

A fix was implemented internally to not have this bad behavior but is not available in the public rc2 or rtm builds yet.

This happens when the list of workloads in IncludedWorkloadManifests.txt (sdk directory) includes more workloads than exist in the sdk-manifests folder. Can you check and see if there's a mismatch between those that file list and what's on disk?

marcpopMSFT avatar Oct 06 '21 21:10 marcpopMSFT

Here are the contents of my IncludedWorkloadManifests.txt (under 6.0.100-rtm.21505.64):

microsoft.net.sdk.android
microsoft.net.sdk.ios
microsoft.net.sdk.maccatalyst
microsoft.net.sdk.macos
microsoft.net.sdk.maui
microsoft.net.sdk.tvos
microsoft.net.workload.mono.toolchain
microsoft.net.workload.emscripten

However, I don't have an "sdk-manifests" folder under the directory... Anything else I can help with?

roji avatar Oct 06 '21 21:10 roji

Is this still an issue?

The sdk-manifests folder should be under the root dotnet directory, as a sibling to directories such as sdk, shared, and packs. Are you missing that folder entirely?

Thanks, Daniel

dsplaisted avatar Dec 29 '21 01:12 dsplaisted

Old issue triage: a lot of this code has been cleaned up so closing.

marcpopMSFT avatar Jul 09 '24 20:07 marcpopMSFT