升级PostSharp至4.3.48时遇MySQL.Data程序集公钥不匹配错误求助
关于PostSharp升级后PS0099错误的问题解答
可能原因
- 项目引用的
MySql.Data6.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.Data6.9.8.0:- 在NuGet包管理器中卸载现有
MySql.Data引用; - 切换到官方NuGet源(nuget.org),重新安装指定版本:
Install-Package MySql.Data -Version 6.9.8.0 - 验证引用属性:右键项目中的
MySql.Data引用,查看“公钥标记”是否为c5687fc88969c44d。
- 在NuGet包管理器中卸载现有
- 清理冲突的程序集:
- 检查GAC中是否存在无签名的
MySql.Data6.9.8.0,若有则删除; - 移除项目中所有非官方的
MySql.Data引用或本地副本。
- 检查GAC中是否存在无签名的
- 添加程序集绑定重定向(若适用):
如果项目实际使用的是其他签名版本的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
相关产品推荐
相关产品推荐

