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

使用MSBuild在Docker中构建VS解决方案遇编译器服务器错误,求解决方法

解决Docker中MSBuild构建时System.Text.Json源生成器MVID不匹配问题

这个错误是因为NuGet缓存里存在不同版本的System.Text.Json分析器/源生成器程序集,加载时模块版本标识符(MVID)不匹配,Docker构建环境中缓存的旧版本和项目依赖的新版本发生了冲突。以下是具体解决办法:

  • 清理NuGet缓存:在Docker构建流程中加入清理NuGet缓存的步骤,避免旧版本程序集残留。执行命令:

    dotnet nuget locals all --clear
    

    或者直接删除容器内System.Text.Json的NuGet缓存目录:

    Remove-Item -Recurse -Force C:\Users\ContainerAdministrator\.nuget\packages\system.text.json -ErrorAction SilentlyContinue
    
  • 统一System.Text.Json版本:检查解决方案中所有项目的System.Text.Json包版本,确保全部使用同一版本(比如统一升级到6.0.5或降级到6.0.0),避免跨版本依赖引发冲突。可以直接编辑项目文件(.csproj)修改版本号,或者通过NuGet包管理器批量调整。

  • 禁用编译器服务器:如果上述方法无效,可以临时禁用Roslyn编译器服务器,避免复用已加载的冲突程序集。在MSBuild命令中添加参数:

    msbuild /p:UseSharedCompilation=false YourSolution.sln
    

    也可以在项目文件中添加以下属性:

    <PropertyGroup>
      <UseSharedCompilation>false</UseSharedCompilation>
    </PropertyGroup>
    
  • 更新Docker镜像:确保使用的.NET SDK Docker镜像为对应版本的最新版,避免镜像自带的旧依赖和项目冲突。比如使用.NET 6 SDK时,拉取mcr.microsoft.com/dotnet/sdk:6.0的最新镜像。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 01:42:52