VSCode无法构建项目求助:dotnet new console报JSON解析错误
问题描述
执行dotnet new console创建新项目时,抛出JSON解析错误,具体错误信息如下:
'0x00' is an invalid start of a value. LineNumber: 0 | BytePositionInLine: 0. at System.Text.Json.ThrowHelper.ThrowJsonReaderException(Utf8JsonReader& json, ExceptionResource resource, Byte 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.ReadStringDictionary(Utf8JsonStreamReader& reader) at Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadManifestReader.ReadLocalizationCatalog(Stream localizationStream, JsonReaderOptions readerOptions) at Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadManifestReader.ReadWorkloadManifest(String manifestId, Stream manifestStream, Stream localizationStream, String informationalPath) 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__272_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)
此外,手动编写的C#项目无法正常运行:选择.NET5或.NET Core框架后无任何响应。已尝试卸载并重新安装VSCode,问题未解决。
解决方案
- 重建.NET模板缓存
执行命令:dotnet new --debug:rebuildtemplatecache - 重置.NET Workload
- 查看已安装的workload:
dotnet workload list - 卸载所有workload:
dotnet workload uninstall --all - 重新恢复workload:
dotnet workload restore
- 查看已安装的workload:
- 删除用户模板缓存目录
- Windows:删除
%USERPROFILE%\.templateengine文件夹 - macOS/Linux:删除
~/.templateengine文件夹
- Windows:删除
- 修复.NET SDK
执行命令:dotnet --repair - 检查并清理损坏的Workload Manifest文件
找到.NET SDK安装目录下的workloads文件夹(例如Windows默认路径为C:\Program Files\dotnet\sdk\<你的SDK版本>\workloads),检查其中的JSON文件是否存在损坏(比如空文件、乱码),删除异常文件后重新执行dotnet workload restore
内容的提问来源于stack exchange,提问作者Justice
相关产品推荐
相关产品推荐

