近期在运行.net项目时,遇到了“GenerateDepsFile”任务意外失败的问题,错误详情如下:

严重性	代码	说明	项目	文件	行	禁止显示状态
错误	MSB4018	“GenerateDepsFile”任务意外失败。
System.IO.FileNotFoundException: 未能加载文件或程序集“System.Text.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51”或它的某一个依赖项。系统找不到指定的文件。
文件名:“System.Text.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51”
   在 Microsoft.Extensions.DependencyModel.DependencyContextWriter.Write(DependencyContext context, Stream stream)
   在 Microsoft.NET.Build.Tasks.GenerateDepsFile.WriteDepsFile(String depsFilePath)
   在 Microsoft.NET.Build.Tasks.GenerateDepsFile.ExecuteCore()
   在 Microsoft.NET.Build.Tasks.TaskBase.Execute()
   在 Microsoft.NET.Build.Tasks.TaskWithAssemblyResolveHooks.Execute()
   在 Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
   在 Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext()

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].
	BIPortalService	C:\Program Files\dotnet\sdk\6.0.136\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets	172	

根据错误提示安装了System.Text.Json 6.0.0的包,重新运行后还是报相同的错误。

A few moments later。。。

最终解决方案:

1、检查是否安装dotnet环境,是否装了多个sdk

dotnet --list-sdks
5.0.404 [C:\Program Files\dotnet\sdk]
6.0.136 [C:\Program Files\dotnet\sdk]

2、如果有多个,则设置默认的sdk

  • 打开用户文件夹,通常是C:\Users\用户名

  • 新建global.json,文件内容如下:

    {
       "sdk": {
          "version": "5.0.404",
          "rollForward": "latestFeature"
       }
    }