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

升级PostSharp至4.3.48时遇MySQL.Data程序集公钥不匹配错误求助

关于PostSharp升级后PS0099错误的问题解答

可能原因

  • 项目引用的MySql.Data 6.9.8.0是无签名版本(公钥标记为null),而PostSharp 4.3.48要求的是官方发布的签名版本(公钥标记c5687fc88969c44d)。PostSharp 4.3版本强化了对第三方依赖程序集的签名校验逻辑,4.2版本未做严格校验,因此升级后触发错误。
  • 安装的MySql.Data包来源非官方:从非nuget.org的第三方源获取的6.9.8.0版本可能是未签名的打包版本,不符合PostSharp的校验要求。
  • 全局程序集缓存(GAC)或项目中存在多个版本的MySql.Data:无签名的同版本程序集被优先加载,覆盖了签名版本。

解决方法

  • 重新安装官方签名版MySql.Data 6.9.8.0:
    1. 在NuGet包管理器中卸载现有MySql.Data引用;
    2. 切换到官方NuGet源(nuget.org),重新安装指定版本:
      Install-Package MySql.Data -Version 6.9.8.0
      
    3. 验证引用属性:右键项目中的MySql.Data引用,查看“公钥标记”是否为c5687fc88969c44d。
  • 清理冲突的程序集:
    • 检查GAC中是否存在无签名的MySql.Data 6.9.8.0,若有则删除;
    • 移除项目中所有非官方的MySql.Data引用或本地副本。
  • 添加程序集绑定重定向(若适用):
    如果项目实际使用的是其他签名版本的MySql.Data,可在web.config中添加绑定重定向,强制PostSharp使用正确版本:
    <configuration>
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-6.9.8.0" newVersion="6.9.8.0" />
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
    </configuration>
    
  • 检查PostSharp扩展依赖:
    确认项目中是否使用了依赖MySQL的PostSharp扩展库(如自定义数据访问切面),同步调整这些扩展的版本,确保其依赖的MySql.Data与PostSharp要求的版本、签名一致。

PostSharp与MySQL的依赖关系

PostSharp核心本身不依赖MySQL。出现该问题的本质是你的项目中存在基于PostSharp的自定义组件或第三方扩展,这些组件引入了对特定版本MySql.Data的依赖。PostSharp 4.3升级后收紧了依赖校验规则,导致之前兼容的无签名版本无法通过校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 00:36:27