You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

执行dotnet build时出现Microsoft.Build.Tasks.CodeAnalysis.dll程序集冲突

解决.NET Core项目构建时MSB4062错误:无法加载Microsoft.CodeAnalysis.BuildTasks.Csc任务

你遇到的这个错误本质是旧版Microsoft.Net.Compilers包与当前.NET Core环境的兼容性冲突,导致构建任务加载失败。先贴出你遇到的错误信息:

C:\Users.nuget\packages\microsoft.net.compilers\2.6.1\tools\Microsoft.CSharp.Core.targets(84,5): error MSB4062: The "Microsoft.CodeAnalysis.BuildTasks.Csc" task could not be loaded from the assembly C:\Users.nuget\packages\microsoft.net.compilers\2.6.1\bu...

下面是几个经过验证的解决步骤,按顺序尝试即可:

  • 移除或升级Microsoft.Net.Compilers
    从.NET Core 3.0开始,SDK已经内置了Roslyn编译器,不再需要单独引用Microsoft.Net.Compilers这个NuGet包。旧版本(比如你用的2.6.1)和新SDK兼容性极差,直接移除是最省心的方案:
    打开项目的.csproj文件,找到类似<PackageReference Include="Microsoft.Net.Compilers" Version="2.6.1" />的行,删除它即可。如果确实需要保留这个包,建议升级到3.8.0及以上的稳定版本。

  • 清理缓存并重新构建
    缓存的损坏包文件也可能导致加载失败,执行以下命令彻底清理:

    dotnet clean
    dotnet nuget locals all --clear
    

    之后重新恢复依赖并构建:

    dotnet restore
    dotnet build
    
  • 检查MSBuild与.NET SDK版本兼容性
    运行dotnet msbuild --version查看当前MSBuild版本,确保它和你的项目目标框架版本匹配。如果版本过低,直接升级到项目要求的.NET Core SDK版本即可。另外也要排查系统中是否有自定义的MSBUILD环境变量指向了旧版本路径,导致加载了错误的程序集。

  • 排查依赖版本冲突
    项目中其他引用的包可能间接引入了不同版本的Microsoft.CodeAnalysis相关程序集,引发冲突。可以用以下命令查看完整依赖树:

    dotnet list package --include-transitive
    

    找到冲突的包后,要么通过在<PackageReference>中添加PrivateAssets="all"隔离依赖,要么在.csproj中添加程序集绑定重定向来统一版本:

    <ItemGroup>
      <RuntimeHostConfigurationOption Include="Microsoft.NETCore.DotNetHostPolicy.SetupLibrariesResolver" Value="true" />
      <AssemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <DependentAssembly>
          <AssemblyIdentity Name="Microsoft.CodeAnalysis" PublicKeyToken="31bf3856ad364e35" Culture="neutral" />
          <BindingRedirect OldVersion="0.0.0.0-4.6.0.0" NewVersion="4.6.0.0" />
        </DependentAssembly>
      </AssemblyBinding>
    </ItemGroup>
    

内容的提问来源于stack exchange,提问作者The Pax Bisonica

火山引擎 最新活动