BSOD 然后 dotnet 工作负载问题 sdk:8 403

问题描述 投票:0回答:1

我正在运行 dotnet 工作负载更新并遇到了 BSOD,现在当我运行

dotnet --info
dotnet workload list

之类的东西时,我遇到了这样的错误

System.Text.Json.JsonReaderException:“0x00” 是一个无效的值的开始。行号: 0 |内联字节位置:0。 在 System.Text.Json.ThrowHelper.ThrowJsonReaderException(Utf8JsonReader& json,ExceptionResource 资源,字节 nextByte,ReadOnlySpan

1 bytes) at System.Text.Json.Utf8JsonReader.ConsumeValue(Byte marker)    at System.Text.Json.Utf8JsonReader.ReadFirstToken(Byte first)    at System.Text.Json.Utf8JsonReader.ReadSingleSegment()    at System.Text.Json.Utf8JsonReader.Read()    at Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadManifestReader.Utf8JsonStreamReader.Read() at Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadManifestReader.ReadWorkloadManifest(String id, String manifestPath, LocalizationCatalog localizationCatalog, Utf8JsonStreamReader& reader)    at Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadManifestReader.ReadWorkloadManifest(String manifestId, Stream manifestStream, Stream localizationStream, String manifestPath)    at Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadResolver.LoadManifestsFromProvider(IWorkloadManifestProvider manifestProvider)    at Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadResolver.InitializeManifests() at Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadResolver.GetAvailableWorkloadDefinitions()+MoveNext() at System.Linq.Enumerable.SelectEnumerableIterator
2.MoveNext() at System.Linq.Enumerable.Contains[TSource](IEnumerable
1 source, TSource value, IEqualityComparer
1 比较器) at Microsoft.DotNet.Workloads.Workload.VisualStudioWorkloads.GetInstalledWorkloads(IWorkloadResolver 工作负载解析器,InstalledWorkloadsCollection安装的工作负载, 可空
1 sdkFeatureBand)    at Microsoft.DotNet.Workloads.Workload.List.WorkloadInfoHelper.AddInstalledVsWorkloads(IEnumerable
1 sdkWorkloadIds)位于 Microsoft.DotNet.Cli.WorkloadCommandParser.ShowWorkloadsInfo(ParseResult parseResult、WorkloadInfoHelper、workloadInfoHelper、IReporter 报告者、字符串 dotnetDir、布尔值 showVersion)位于 Microsoft.DotNet.Cli.CommandLineInfo.PrintWorkloadsInfo() 位于 Microsoft.DotNet.Cli.CommandLineInfo.PrintInfo() 位于 Microsoft.DotNet.Cli.Program.ProcessArgs(String[] args, TimeSpan 启动时间,ITelemetry telemetryClient)位于 Microsoft.DotNet.Cli.Program.Main(String[] args)

我有

  • 卸载并重新安装sdk
  • 使用 dotnet.exe 的过滤器运行 procmon,我可以将其上传到某处并稍后链接。

尝试读取清单时,该异常不提供路径,因此很难找到正确的路径。是否有配置或其他东西可以让异常变得更详细,而不是费力地浏览 procmon 列出的所有清单文件并尝试找到 0 字节损坏的 json 文件。

.net .net-core .net-8.0 dotnet-cli
1个回答
0
投票

这里有一些想法:

  • dotnet workload repair
  • 转到
    C:\Program Files\dotnet\sdk-manifests\8.0.100
    ,然后
    • 搜索
      *.json
      并按大小排序以查找空文件或可疑的小文件,可以修复或删除该文件,或者如果很难找到:
    • 移动/删除所有清单文件/文件夹,然后使用
      dotnet workload install
    • 重新安装任何所需的清单
© www.soinside.com 2019 - 2024. All rights reserved.