You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解决VS2022中.NET6项目编译器分析器版本冲突CS9057错误

问题描述

打开Microsoft Visual Studio Community 2022 (64-bit) Version 17.6.5中的.NET6项目时,无法正常运行,出现以下错误:

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'新。

项目文件配置如下:

<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>

近期安装了包含.NET 8 SDK的Microsoft Visual Studio Community 2022 (64-bit) Version 17.7.0 Preview 3.0,推测这是引发分析器引用冲突的原因。已尝试清理项目、删除obj和bin文件夹、删除vs文件夹,但问题仍未解决。

本地已安装的SDK列表:

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]

当前默认SDK版本:

8.0.100-preview.6.23330.14

需求:将分析器引用改回.NET6版本,或提供最佳解决方法。

解决方案

1. 为项目指定兼容的SDK版本

在项目根目录创建global.json文件,强制项目使用.NET6兼容的稳定版SDK(比如7.0.306),避免调用.NET8的分析器:

{
  "sdk": {
    "version": "7.0.306",
    "rollForward": "latestMinor"
  }
}

添加后重新加载项目,VS会自动使用指定的SDK构建。

2. 更新Visual Studio版本

将VS 2022 17.6.5升级到17.7正式版(或更高稳定版),新版本的编译器版本会匹配.NET8 SDK的分析器要求;也可以直接使用已安装的VS 17.7 Preview 3.0打开该项目,其内置编译器支持.NET8分析器。

3. 禁用冲突的Razor分析器

在项目文件中添加配置,排除.NET8版本的冲突分析器:

<ItemGroup Condition="'$(TargetFramework)' == 'net6.0'">
  <Analyzer Remove="@(Analyzer)" Condition="%(Analyzer.FullPath.Contains('8.0.100-preview'))" />
</ItemGroup>

4. 调整全局默认SDK版本

通过命令将全局默认SDK切换到稳定版:

dotnet new globaljson --sdk-version 7.0.306 --force

该操作会在用户目录生成global.json,所有未指定SDK版本的项目都会使用该版本。

内容的提问来源于stack exchange,提问作者Tyson Gibby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 19:17:48