程序集引用不匹配0x80131040问题探究

本文探讨了.NET开发中遇到的程序集引用不匹配问题(HRESULT:0x80131040),分析了AssemblyFileVersion和AssemblyVersion的区别,并介绍了如何通过程序集绑定重定向、Fusion Log和工具如Dependency Walker、Dependencies、DependencyWalker.Net来诊断和解决此类问题。重点讲述了绑定重定向的方法以及Fusion Log的使用,帮助开发者处理插件式编程中的依赖冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进行插件式编程的时候,经常性地弹出这么个东西找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040),往往这种问题特别难以解决,搞定了一个还要出另外一个。得研究一下怎么处理。

引用不匹配#
这里提示需要加载一个4.2.0.0版本的dll,我先看看文件夹下面有没有对应的dll,查看文件dll的详细信息。

这个版本号4.6.27818.1和4.2.0.0也差的有点太远了吧,是这个问题?其实不是的,这个地方显示的版本和程序集的版本不是一回事。

程序集版本#
.NET程序有很多版本的说法,官方对这个有解释,通过文件管理器获得的版本是AssemblyFileVersion,而程序集加载器定位的版本使用的是AssemblyVersion,这两个东西完全不是一回事。通过右键,我们看不到AssemblyVersion,比较简单的方式,可以通过Powershell脚本来查看程序集版本。

Copy
ls *.dll -r |
ForEach-Object {
try {
∣Add−MemberNotePropertyFileVersion(_ | Add-Member NoteProperty FileVersion (AddMemberNotePropertyFileVersion(.VersionInfo.FileVersion)
∣Add−MemberNotePropertyAssemblyVersion([Reflection.AssemblyName]::GetAssemblyName(_ | Add-Member NoteProperty AssemblyVersion ( [Reflection.AssemblyName]::GetAssemblyName(AddMemberNotePropertyAssemblyVersion([

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值