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

在Ubuntu(Mono环境)运行DevExpress版ASP.NET Web应用报错求助

解决Ubuntu服务器上DevExpress ASP.NET应用的程序集加载错误

这个问题我之前帮朋友排查过类似的,核心是程序集版本不匹配+Mono环境下的DevExpress部署细节,给你几个针对性的解决步骤:

  • 先确认本地部署的程序集版本是否正确
    找到你应用bin目录里的DevExpress.Web.v11.1.dll,用Mono的工具查看它的实际版本和公钥令牌:

    monodis --assembly /path/to/your/app/bin/DevExpress.Web.v11.1.dll
    

    对比错误提示里的Version=11.1.4.0和PublicKeyToken=9b171c9fd64da1d1,如果bin里的dll版本不对,大概率是从Windows开发环境复制过来的时候带错了文件,重新从开发机的输出目录拷贝正确的dll到服务器。

  • 清理服务器GAC里的冲突程序集
    如果你的Ubuntu服务器上的Mono全局程序集缓存(GAC)里装了其他版本的DevExpress,会优先加载GAC里的版本,导致和应用依赖的版本不匹配。执行命令删掉冲突的程序集:

    gacutil -u DevExpress.Web.v11.1
    

    同时记得在Windows开发环境里,把项目中DevExpress引用的复制本地属性设为True——这样部署时会把正确版本的dll打包到bin目录,彻底避免依赖GAC的版本。

  • 检查web.config的程序集绑定重定向
    打开应用的web.config,确认是否有正确的程序集绑定重定向配置,确保Mono只会加载你指定的版本。如果没有,添加如下节点到<configuration>下的<runtime>里:

    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="DevExpress.Web.v11.1" publicKeyToken="9b171c9fd64da1d1" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-11.1.4.0" newVersion="11.1.4.0" />
      </dependentAssembly>
    </assemblyBinding>
    
  • 验证Mono版本兼容性
    DevExpress v11.1是比较老的版本,针对.NET Framework 4.0开发,你需要确保Ubuntu上的Mono版本至少是4.x(对应.NET 4.0支持)。执行mono --version查看当前版本,如果版本太低,升级Mono到兼容的版本。

  • 检查依赖项是否完整
    错误提示里提到“one of its dependencies”,可能是DevExpress.Web.v11.1依赖的其他dll没部署全。用Mono工具查看它的依赖列表:

    monodis --dependencies /path/to/your/app/bin/DevExpress.Web.v11.1.dll
    

    把所有列出的依赖dll(比如DevExpress.Data.v11.1.dll、DevExpress.Utils.v11.1.dll等)都从开发机拷贝到服务器的bin目录里,确保没有遗漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:58:18