如何修复“分析器程序集引用编译器的版本‘4.7.0.0’,该版本比当前运行的版本‘4.6.0.0’更新。”

Tys*_*bby 17 c# dependencies .net-6.0 visual-studio-2022 .net-8.0

今天早上我打开了 Visual Studio 2022 项目,但由于出现以下错误而无法让它继续运行:

CS9057 分析器程序集 'C:\Program Files\dotnet\sdk\8.0.100-preview.6.23330.14\Sdks\Microsoft.NET.Sdk.Razor\source-generators\Microsoft.NET.Sdk.Razor.SourceGenerators.dll '引用编译器的版本'4.7.0.0',它比当前运行的版本'4.6.0.0'更新。”

我目前正在使用Microsoft Visual Studio Community 2022 (64-bit) Version 17.6.5

我的项目文件:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>     
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Components.Analyzers" Version="6.0.20" />
    <PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="6.0.16" />
    <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="6.0.16" />
    <PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="6.0.16" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Analyzers" Version="6.0.20" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.16" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.16" />
    <PackageReference Include="MudBlazor" Version="6.2.3" />
  </ItemGroup>

</Project>
Run Code Online (Sandbox Code Playgroud)

我最近安装了Microsoft Visual Studio Community 2022 (64-bit) Version 17.7.0 Preview 3.0包含.NET 8 SDK. 这似乎是导致分析器引用冲突的原因。

我无法找到文档来帮助我将分析器引用更改回正确的版本,并且似乎没有任何方法可以在Nuget Package ManagerReference Manager.

我的其他 .NET 6 项目可以工作,但这个项目不行。

我尝试清理项目并删除 obj 和 bin 文件夹,甚至删除 vs 文件夹。

输出dotnet --list-sdks

3.0.103 [C:\Program Files\dotnet\sdk] 3.1.426 [C:\Program Files\dotnet\sdk] 7.0.306 [C:\Program Files\dotnet\sdk] 7.0.400-preview.23330.10 [ C:\Program Files\dotnet\sdk] 8.0.100-preview.6.23330.14 [C:\Program Files\dotnet\sdk]

输出来自dotnet --version

8.0.100-预览版.6.23330.14

如何将分析器引用更改回 .NET 6?或者解决这个问题的最佳方法是什么?

Gur*_*ron 9

选择要使用文档的 .NET 版本

SDK使用最新安装的版本

SDK命令包括dotnet newdotnet run. .NET CLI 必须为每个 dotnet 命令选择 SDK 版本。它默认使用机器上安装的最新 SDK,即使:

  • 该项目针对早期版本的 .NET 运行时。
  • .NET SDK 的最新版本是预览版。

尝试将global.json文件添加到项目的根目录:

global.json 文件允许您定义运行 .NET CLI 命令时使用的 .NET SDK 版本。选择 .NET SDK 版本与指定项目目标的运行时版本无关。.NET SDK 版本指示使用哪个版本的 .NET CLI。

像这样的东西:

{
  "sdk": {
    "version": "6.0.0",
    "rollForward": "latestMinor"
  }
}
Run Code Online (Sandbox Code Playgroud)

另外,将 .NET SDK 更新到最新版本(即本例中为最新的 .NET 6 和 .NET 8)并安装最新的 VS 版本(加上“常规” - 重新启动 VS、重新启动计算机、删除 bin/obj 文件夹)也会有所帮助。


Tys*_*bby 4

由于时间限制,我最终卸载了 .NET 8 的 VS 2022 预览版和 .NET 8 SDK,为了完全解决这个问题,我需要卸载当前的 .NET SDK 并重新安装。该项目现在再次构建并运行。

等他们解决了这些错误后,我们将再次安装 .NET 8。

更新:我最近更新到最新的 Visual Studio 版本,Version 17.8.0带有.NET 8.0 SDK v8.0.100. 最终发布版本。

这已经解决了我的问题。