进行插件式编程的时候,经常性地弹出这么个东西找到的程序集清单定义与程序集引用不匹配。 (异常来自 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 (∣Add−MemberNotePropertyFileVersion(.VersionInfo.FileVersion)
∣Add−MemberNotePropertyAssemblyVersion([Reflection.AssemblyName]::GetAssemblyName(_ | Add-Member NoteProperty AssemblyVersion (
[Reflection.AssemblyName]::GetAssemblyName(∣Add−MemberNotePropertyAssemblyVersion([Reflection.AssemblyName]::GetAssemblyName(.FullName).Version
)
} catch {}
$_
} |
Select-Object Name,FileVersion,AssemblyVersion
可以看到,我这边的程序集是4.2.0.1版本的,不是4.2.0.0版本的,因此,程序集不能正常加载。
我自己的项目是使用nuget进行包管理的,引用的包的版本号是4.5.3(又多一个版本…),程序集版本是4.2.0.1。我找遍了整个项目,都没有找到我dll项目中关于4.2.0.0版本的引用,苦思良久,打盹的时候忽然想起来,是不是那个exe的问题?
绑定重定向#
我的主exe程序是使用.NET Framework 4.6.1进行编译,然后单独编译dll作为插件放入一个文件夹,由exe程序进行加载。那有可能是exe引用了4.2.0.0这个版本,或者是其他dll插件引用了这个版本,造成版本不兼容。
这种情况可以有很多种解决方案,这篇文章写的非常详细,推荐读一读。而我这里使用了最简单也是作者比较推荐的办法,程序集引用的绑定重定向。
使用这个方法有一个前提,你需要完全了解其他程序引用这个程序版本的时候不会出问题,一般小版本号的变动,是相对比较安全的。
一直以来,我写.NET Framework程序貌似就很少有这种问题,是因为微软会自动给程序设置重定向,我们可以通过在项目上右键,点选自动生成绑定重定向。
之后,会出现一个app.config文件,它会在生成程序的时候,变成程序名称.dll.config的形式,里面大概是这个样子的:
Copy
<?xml version="1.0" encoding="utf-8"?> 可以发现,这个东西对我们引用的版本内容进行了限制,强制某个范围内的版本重定向为一个固定的版本号。不过,虽然dll中已经有这个内容,但是exe不会理会它的,它只会看自己主程序的.exe.config文件。所以我们需要做的,就是把这一个部分内容搬到主程序的.exe.config中。修改后重新运行,然后有又提示找不到System.Buffers.dll了,如法炮制,问题解决。
Fusion Log#
有时候,通过这个方法找下去,处理完了,也不一定能够解决,因为这个错误提示的是“未能加载文件或程序集或它的某一个依赖项。”,也可能是某个引用的依赖项出了问题,这样就不是很好找了。
好在.NET提供了一个程序集绑定日志的工具,可以帮助我们查看绑定的问题。一般情况下,这个东西是关闭的,系统会提示:
Copy
警告: 程序集绑定日志记录被关闭。
要启用程序集绑定失败日志记录,请将注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD)设置为 1。
注意: 会有一些与程序集绑定失败日志记录关联的性能损失。
要关闭此功能,请移除注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog]。
调试的话,可以打开这个注册表键值。或者简单点,直接使用Fuslogvw.exe(程序集绑定日志查看器),用管理员账号启动,在设置中设置好记录的日志信息,然后就可以记录了,详细的使用方法,见这里。就能看到详细的信息了,可以帮助我们深入分析内部绑定的问题。(用完记得关,有性能损失。)
Copy
=== 预绑定状态信息 ===
日志: DisplayName = System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
(Fully-specified)
日志: Appbase = file:///C:/Temp/360zip$Temp/360$0/
日志: 初始 PrivatePath = NULL
调用程序集: DependencyWalker, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null。
日志: 此绑定从 default 加载上下文开始。
日志: 未找到应用程序配置文件。
日志: 使用主机配置文件:
日志: 使用 C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config 的计算机配置文件。
日志: 策略后引用: System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
日志: 相同的绑定已出现过,因 hr = 0x80070002 而失败。
Dependency Walker#
说到dll的引用,就有必要提一提非常有名的一个工具Dependency Walker,它可以查看PE文件的引用情况,但是这个程序很久没有更新了,对.NET很不友好。我找了一下,发现几个替代:
Dependencies
这个工具可以认为是Dependency Walker的升级版,可以查看PE文件的引用信息,对.NET也可以支持,不过看的信息太少了,也无法显示缺失的情况。
DependencyWalker.Net
这个工具是专门为.NET设计的,可以查看程序集的引用情况,我删除了我插件的几个dll,然后看就是这个样子,一目了然,版本号也非常清楚。
通过这些工具,可以帮我们找一找到底是dll的问题,也许会对“试图加载格式不正确的程序。”、“引用不匹配。”等引用相关问题有所帮助。
https://github.com/7jxumfpc/mgmiqswogs/discussions/4
https://github.com/qyf0xklw/txdfvjrbzp/discussions/8
https://github.com/7jxumfpc/mgmiqswogs/discussions/5
https://github.com/qyf0xklw/txdfvjrbzp/discussions/9
https://github.com/7jxumfpc/mgmiqswogs/discussions/6
https://github.com/qyf0xklw/txdfvjrbzp/discussions/10
https://github.com/7jxumfpc/mgmiqswogs/discussions/7
https://github.com/7jxumfpc/mgmiqswogs/discussions/8
https://github.com/djvb5gwz/kdnyzskenz/discussions/164
https://github.com/tygq5nux/jkgibzxucg/discussions/167
https://github.com/djvb5gwz/kdnyzskenz/discussions/165
https://github.com/djvb5gwz/kdnyzskenz/discussions/166
https://github.com/tygq5nux/jkgibzxucg/discussions/168
https://github.com/djvb5gwz/kdnyzskenz/discussions/167
https://github.com/tygq5nux/jkgibzxucg/discussions/169
https://github.com/tygq5nux/jkgibzxucg/discussions/170
https://github.com/djvb5gwz/kdnyzskenz/discussions/168
https://github.com/tygq5nux/jkgibzxucg/discussions/171
https://github.com/djvb5gwz/kdnyzskenz/discussions/169
https://github.com/tygq5nux/jkgibzxucg/discussions/172
https://github.com/tygq5nux/jkgibzxucg/discussions/173
https://github.com/djvb5gwz/kdnyzskenz/discussions/171
https://github.com/tygq5nux/jkgibzxucg/discussions/174
https://github.com/djvb5gwz/kdnyzskenz/discussions/172
https://github.com/tygq5nux/jkgibzxucg/discussions/175
https://github.com/djvb5gwz/kdnyzskenz/discussions/173
https://github.com/tygq5nux/jkgibzxucg/discussions/176
https://github.com/djvb5gwz/kdnyzskenz/discussions/174
https://github.com/tygq5nux/jkgibzxucg/discussions/177
https://github.com/djvb5gwz/kdnyzskenz/discussions/175
https://github.com/tygq5nux/jkgibzxucg/discussions/178
https://github.com/djvb5gwz/kdnyzskenz/discussions/176
https://github.com/tygq5nux/jkgibzxucg/discussions/179
https://github.com/djvb5gwz/kdnyzskenz/discussions/177
https://github.com/tygq5nux/jkgibzxucg/discussions/180
https://github.com/djvb5gwz/kdnyzskenz/discussions/178
https://github.com/tygq5nux/jkgibzxucg/discussions/181
https://github.com/djvb5gwz/kdnyzskenz/discussions/179
https://github.com/tygq5nux/jkgibzxucg/discussions/182
https://github.com/djvb5gwz/kdnyzskenz/discussions/180
https://github.com/tygq5nux/jkgibzxucg/discussions/183
https://github.com/djvb5gwz/kdnyzskenz/discussions/181
https://github.com/tygq5nux/jkgibzxucg/discussions/184
https://github.com/djvb5gwz/kdnyzskenz/discussions/182
https://github.com/tygq5nux/jkgibzxucg/discussions/185
https://github.com/djvb5gwz/kdnyzskenz/discussions/183
https://github.com/tygq5nux/jkgibzxucg/discussions/186
https://github.com/djvb5gwz/kdnyzskenz/discussions/184
https://github.com/tygq5nux/jkgibzxucg/discussions/187
https://github.com/djvb5gwz/kdnyzskenz/discussions/185
https://github.com/tygq5nux/jkgibzxucg/discussions/188
https://github.com/tygq5nux/jkgibzxucg/discussions/189
https://github.com/djvb5gwz/kdnyzskenz/discussions/186
https://github.com/tygq5nux/jkgibzxucg/discussions/190
https://github.com/djvb5gwz/kdnyzskenz/discussions/187
https://github.com/tygq5nux/jkgibzxucg/discussions/191
https://github.com/djvb5gwz/kdnyzskenz/discussions/188
https://github.com/tygq5nux/jkgibzxucg/discussions/192
https://github.com/djvb5gwz/kdnyzskenz/discussions/189
https://github.com/tygq5nux/jkgibzxucg/discussions/193
https://github.com/djvb5gwz/kdnyzskenz/discussions/190
https://github.com/tygq5nux/jkgibzxucg/discussions/194
https://github.com/djvb5gwz/kdnyzskenz/discussions/191
https://github.com/tygq5nux/jkgibzxucg/discussions/195
https://github.com/tygq5nux/jkgibzxucg/discussions/196
https://github.com/djvb5gwz/kdnyzskenz/discussions/192
https://github.com/djvb5gwz/kdnyzskenz/discussions/193
https://github.com/tygq5nux/jkgibzxucg/discussions/197
https://github.com/djvb5gwz/kdnyzskenz/discussions/194
https://github.com/tygq5nux/jkgibzxucg/discussions/198
https://github.com/tygq5nux/jkgibzxucg/discussions/199
https://github.com/djvb5gwz/kdnyzskenz/discussions/195
https://github.com/djvb5gwz/kdnyzskenz/discussions/196
https://github.com/tygq5nux/jkgibzxucg/discussions/200
https://github.com/djvb5gwz/kdnyzskenz/discussions/197
https://github.com/tygq5nux/jkgibzxucg/discussions/201
https://github.com/djvb5gwz/kdnyzskenz/discussions/198
https://github.com/tygq5nux/jkgibzxucg/discussions/202
https://github.com/djvb5gwz/kdnyzskenz/discussions/199
https://github.com/tygq5nux/jkgibzxucg/discussions/203
https://github.com/djvb5gwz/kdnyzskenz/discussions/200
https://github.com/tygq5nux/jkgibzxucg/discussions/204
https://github.com/djvb5gwz/kdnyzskenz/discussions/201
https://github.com/tygq5nux/jkgibzxucg/discussions/205
https://github.com/djvb5gwz/kdnyzskenz/discussions/202
https://github.com/tygq5nux/jkgibzxucg/discussions/206
https://github.com/djvb5gwz/kdnyzskenz/discussions/203
https://github.com/djvb5gwz/kdnyzskenz/discussions/204
https://github.com/djvb5gwz/kdnyzskenz/discussions/205
https://github.com/djvb5gwz/kdnyzskenz/discussions/206
https://github.com/djvb5gwz/kdnyzskenz/discussions/207
https://github.com/tygq5nux/jkgibzxucg/discussions/207
https://github.com/djvb5gwz/kdnyzskenz/discussions/208
https://github.com/tygq5nux/jkgibzxucg/discussions/208
https://github.com/djvb5gwz/kdnyzskenz/discussions/209
https://github.com/tygq5nux/jkgibzxucg/discussions/209
https://github.com/djvb5gwz/kdnyzskenz/discussions/210
https://github.com/tygq5nux/jkgibzxucg/discussions/210
https://github.com/djvb5gwz/kdnyzskenz/discussions/211
https://github.com/tygq5nux/jkgibzxucg/discussions/211
https://github.com/djvb5gwz/kdnyzskenz/discussions/212
https://github.com/tygq5nux/jkgibzxucg/discussions/212
https://github.com/tygq5nux/jkgibzxucg/discussions/213
https://github.com/djvb5gwz/kdnyzskenz/discussions/213
https://github.com/tygq5nux/jkgibzxucg/discussions/214
https://github.com/djvb5gwz/kdnyzskenz/discussions/214
https://github.com/djvb5gwz/kdnyzskenz/discussions/215
https://github.com/tygq5nux/jkgibzxucg/discussions/215
https://github.com/djvb5gwz/kdnyzskenz/discussions/216
https://github.com/tygq5nux/jkgibzxucg/discussions/216
https://github.com/djvb5gwz/kdnyzskenz/discussions/217
https://github.com/tygq5nux/jkgibzxucg/discussions/217
https://github.com/djvb5gwz/kdnyzskenz/discussions/218
https://github.com/tygq5nux/jkgibzxucg/discussions/218
https://github.com/djvb5gwz/kdnyzskenz/discussions/219
https://github.com/tygq5nux/jkgibzxucg/discussions/219
https://github.com/djvb5gwz/kdnyzskenz/discussions/220
https://github.com/tygq5nux/jkgibzxucg/discussions/220
https://github.com/djvb5gwz/kdnyzskenz/discussions/221
https://github.com/tygq5nux/jkgibzxucg/discussions/221
https://github.com/djvb5gwz/kdnyzskenz/discussions/222
https://github.com/tygq5nux/jkgibzxucg/discussions/222
https://github.com/djvb5gwz/kdnyzskenz/discussions/223
https://github.com/tygq5nux/jkgibzxucg/discussions/223
https://github.com/djvb5gwz/kdnyzskenz/discussions/224
https://github.com/tygq5nux/jkgibzxucg/discussions/224
https://github.com/djvb5gwz/kdnyzskenz/discussions/225
https://github.com/tygq5nux/jkgibzxucg/discussions/225
https://github.com/djvb5gwz/kdnyzskenz/discussions/226
https://github.com/tygq5nux/jkgibzxucg/discussions/226
https://github.com/djvb5gwz/kdnyzskenz/discussions/227
https://github.com/tygq5nux/jkgibzxucg/discussions/227
https://github.com/djvb5gwz/kdnyzskenz/discussions/228
https://github.com/tygq5nux/jkgibzxucg/discussions/228
https://github.com/djvb5gwz/kdnyzskenz/discussions/229
https://github.com/tygq5nux/jkgibzxucg/discussions/229
https://github.com/djvb5gwz/kdnyzskenz/discussions/230
https://github.com/tygq5nux/jkgibzxucg/discussions/230
https://github.com/djvb5gwz/kdnyzskenz/discussions/231
https://github.com/zjd6qwwu/xiellftjwv/discussions/89
https://github.com/bolo3m2k/rdhslbggtt/discussions/93
https://github.com/zjd6qwwu/xiellftjwv/discussions/90
https://github.com/bolo3m2k/rdhslbggtt/discussions/94
https://github.com/zjd6qwwu/xiellftjwv/discussions/91
https://github.com/bolo3m2k/rdhslbggtt/discussions/95
https://github.com/bolo3m2k/rdhslbggtt/discussions/96
https://github.com/bolo3m2k/rdhslbggtt/discussions/97
https://github.com/zjd6qwwu/xiellftjwv/discussions/92
https://github.com/bolo3m2k/rdhslbggtt/discussions/98
https://github.com/zjd6qwwu/xiellftjwv/discussions/93
https://github.com/bolo3m2k/rdhslbggtt/discussions/99
https://github.com/zjd6qwwu/xiellftjwv/discussions/94
https://github.com/bolo3m2k/rdhslbggtt/discussions/100
https://github.com/bolo3m2k/rdhslbggtt/discussions/101
https://github.com/bolo3m2k/rdhslbggtt/discussions/102
https://github.com/zjd6qwwu/xiellftjwv/discussions/95
https://github.com/bolo3m2k/rdhslbggtt/discussions/103
https://github.com/bolo3m2k/rdhslbggtt/discussions/104
https://github.com/zjd6qwwu/xiellftjwv/discussions/96
https://github.com/bolo3m2k/rdhslbggtt/discussions/105
https://github.com/zjd6qwwu/xiellftjwv/discussions/97
https://github.com/bolo3m2k/rdhslbggtt/discussions/106
https://github.com/bolo3m2k/rdhslbggtt/discussions/107
https://github.com/bolo3m2k/rdhslbggtt/discussions/108
https://github.com/zjd6qwwu/xiellftjwv/discussions/98
https://github.com/bolo3m2k/rdhslbggtt/discussions/109
https://github.com/zjd6qwwu/xiellftjwv/discussions/99
https://github.com/bolo3m2k/rdhslbggtt/discussions/110
https://github.com/bolo3m2k/rdhslbggtt/discussions/111
https://github.com/zjd6qwwu/xiellftjwv/discussions/100
https://github.com/bolo3m2k/rdhslbggtt/discussions/112
https://github.com/zjd6qwwu/xiellftjwv/discussions/101
https://github.com/bolo3m2k/rdhslbggtt/discussions/113
https://github.com/bolo3m2k/rdhslbggtt/discussions/114
https://github.com/bolo3m2k/rdhslbggtt/discussions/115
https://github.com/bolo3m2k/rdhslbggtt/discussions/116
https://github.com/zjd6qwwu/xiellftjwv/discussions/102
https://github.com/zjd6qwwu/xiellftjwv/discussions/103
https://github.com/bolo3m2k/rdhslbggtt/discussions/117
https://github.com/zjd6qwwu/xiellftjwv/discussions/104
https://github.com/bolo3m2k/rdhslbggtt/discussions/118
https://github.com/zjd6qwwu/xiellftjwv/discussions/105
https://github.com/bolo3m2k/rdhslbggtt/discussions/119
https://github.com/zjd6qwwu/xiellftjwv/discussions/106
https://github.com/bolo3m2k/rdhslbggtt/discussions/120
https://github.com/qyf0xklw/txdfvjrbzp/discussions/11
https://github.com/7jxumfpc/mgmiqswogs/discussions/9
https://github.com/qyf0xklw/txdfvjrbzp/discussions/12
https://github.com/qyf0xklw/txdfvjrbzp/discussions/13
https://github.com/7jxumfpc/mgmiqswogs/discussions/10
https://github.com/qyf0xklw/txdfvjrbzp/discussions/14
https://github.com/7jxumfpc/mgmiqswogs/discussions/11
https://github.com/qyf0xklw/txdfvjrbzp/discussions/15
https://github.com/7jxumfpc/mgmiqswogs/discussions/12
https://github.com/qyf0xklw/txdfvjrbzp/discussions/16
https://github.com/7jxumfpc/mgmiqswogs/discussions/13
https://github.com/qyf0xklw/txdfvjrbzp/discussions/17
https://github.com/7jxumfpc/mgmiqswogs/discussions/14
https://github.com/qyf0xklw/txdfvjrbzp/discussions/19
https://github.com/7jxumfpc/mgmiqswogs/discussions/15
https://github.com/qyf0xklw/txdfvjrbzp/discussions/20
https://github.com/7jxumfpc/mgmiqswogs/discussions/16
https://github.com/qyf0xklw/txdfvjrbzp/discussions/21
https://github.com/7jxumfpc/mgmiqswogs/discussions/17
https://github.com/qyf0xklw/txdfvjrbzp/discussions/22
https://github.com/qyf0xklw/txdfvjrbzp/discussions/23
https://github.com/7jxumfpc/mgmiqswogs/discussions/18
https://github.com/qyf0xklw/txdfvjrbzp/discussions/24
https://github.com/qyf0xklw/txdfvjrbzp/discussions/25
https://github.com/7jxumfpc/mgmiqswogs/discussions/19
https://github.com/7jxumfpc/mgmiqswogs/discussions/20
https://github.com/qyf0xklw/txdfvjrbzp/discussions/26
https://github.com/7jxumfpc/mgmiqswogs/discussions/21
https://github.com/qyf0xklw/txdfvjrbzp/discussions/27
https://github.com/7jxumfpc/mgmiqswogs/discussions/22
https://github.com/qyf0xklw/txdfvjrbzp/discussions/28
https://github.com/7jxumfpc/mgmiqswogs/discussions/23
https://github.com/qyf0xklw/txdfvjrbzp/discussions/29
https://github.com/7jxumfpc/mgmiqswogs/discussions/24
https://github.com/7jxumfpc/mgmiqswogs/discussions/25
https://github.com/7jxumfpc/mgmiqswogs/discussions/26
https://github.com/qyf0xklw/txdfvjrbzp/discussions/30
https://github.com/7jxumfpc/mgmiqswogs/discussions/27
https://github.com/qyf0xklw/txdfvjrbzp/discussions/31
https://github.com/qyf0xklw/txdfvjrbzp/discussions/32
https://github.com/qyf0xklw/txdfvjrbzp/discussions/33
https://github.com/7jxumfpc/mgmiqswogs/discussions/28
https://github.com/qyf0xklw/txdfvjrbzp/discussions/34
https://github.com/7jxumfpc/mgmiqswogs/discussions/29
https://github.com/7jxumfpc/mgmiqswogs/discussions/30
https://github.com/qyf0xklw/txdfvjrbzp/discussions/35
https://github.com/qyf0xklw/txdfvjrbzp/discussions/36
https://github.com/qyf0xklw/txdfvjrbzp/discussions/37
https://github.com/qyf0xklw/txdfvjrbzp/discussions/38
https://github.com/7jxumfpc/mgmiqswogs/discussions/31
https://github.com/7jxumfpc/mgmiqswogs/discussions/32
https://github.com/qyf0xklw/txdfvjrbzp/discussions/39
https://github.com/7jxumfpc/mgmiqswogs/discussions/33
https://github.com/tygq5nux/jkgibzxucg/discussions/231
https://github.com/djvb5gwz/kdnyzskenz/discussions/232
https://github.com/tygq5nux/jkgibzxucg/discussions/232
https://github.com/djvb5gwz/kdnyzskenz/discussions/233
https://github.com/tygq5nux/jkgibzxucg/discussions/233
https://github.com/djvb5gwz/kdnyzskenz/discussions/234
https://github.com/tygq5nux/jkgibzxucg/discussions/234
https://github.com/djvb5gwz/kdnyzskenz/discussions/235
https://github.com/tygq5nux/jkgibzxucg/discussions/235
https://github.com/tygq5nux/jkgibzxucg/discussions/236
https://github.com/djvb5gwz/kdnyzskenz/discussions/236
https://github.com/djvb5gwz/kdnyzskenz/discussions/237
https://github.com/tygq5nux/jkgibzxucg/discussions/237
https://github.com/djvb5gwz/kdnyzskenz/discussions/239
https://github.com/tygq5nux/jkgibzxucg/discussions/239
https://github.com/djvb5gwz/kdnyzskenz/discussions/240
https://github.com/tygq5nux/jkgibzxucg/discussions/240
https://github.com/djvb5gwz/kdnyzskenz/discussions/241
https://github.com/tygq5nux/jkgibzxucg/discussions/241
https://github.com/djvb5gwz/kdnyzskenz/discussions/242
https://github.com/djvb5gwz/kdnyzskenz/discussions/243
https://github.com/tygq5nux/jkgibzxucg/discussions/242
https://github.com/djvb5gwz/kdnyzskenz/discussions/244
https://github.com/tygq5nux/jkgibzxucg/discussions/243
https://github.com/djvb5gwz/kdnyzskenz/discussions/245
https://github.com/tygq5nux/jkgibzxucg/discussions/244
https://github.com/djvb5gwz/kdnyzskenz/discussions/246
https://github.com/tygq5nux/jkgibzxucg/discussions/245
https://github.com/djvb5gwz/kdnyzskenz/discussions/247
https://github.com/tygq5nux/jkgibzxucg/discussions/246
https://github.com/tygq5nux/jkgibzxucg/discussions/247
https://github.com/djvb5gwz/kdnyzskenz/discussions/248
https://github.com/tygq5nux/jkgibzxucg/discussions/248
https://github.com/djvb5gwz/kdnyzskenz/discussions/249
https://github.com/tygq5nux/jkgibzxucg/discussions/249
https://github.com/djvb5gwz/kdnyzskenz/discussions/250
https://github.com/tygq5nux/jkgibzxucg/discussions/250
https://github.com/djvb5gwz/kdnyzskenz/discussions/251
https://github.com/tygq5nux/jkgibzxucg/discussions/251
https://github.com/djvb5gwz/kdnyzskenz/discussions/252
https://github.com/djvb5gwz/kdnyzskenz/discussions/253
https://github.com/tygq5nux/jkgibzxucg/discussions/252
https://github.com/tygq5nux/jkgibzxucg/discussions/253
https://github.com/djvb5gwz/kdnyzskenz/discussions/254
https://github.com/tygq5nux/jkgibzxucg/discussions/254
https://github.com/djvb5gwz/kdnyzskenz/discussions/255
https://github.com/tygq5nux/jkgibzxucg/discussions/255
https://github.com/djvb5gwz/kdnyzskenz/discussions/256
https://github.com/tygq5nux/jkgibzxucg/discussions/256
https://github.com/djvb5gwz/kdnyzskenz/discussions/257
https://github.com/tygq5nux/jkgibzxucg/discussions/257
https://github.com/djvb5gwz/kdnyzskenz/discussions/258
https://github.com/tygq5nux/jkgibzxucg/discussions/258
https://github.com/djvb5gwz/kdnyzskenz/discussions/259
https://github.com/tygq5nux/jkgibzxucg/discussions/259
https://github.com/djvb5gwz/kdnyzskenz/discussions/260
https://github.com/tygq5nux/jkgibzxucg/discussions/260
https://github.com/djvb5gwz/kdnyzskenz/discussions/261
https://github.com/tygq5nux/jkgibzxucg/discussions/261
https://github.com/djvb5gwz/kdnyzskenz/discussions/262
https://github.com/tygq5nux/jkgibzxucg/discussions/262
https://github.com/djvb5gwz/kdnyzskenz/discussions/263
https://github.com/tygq5nux/jkgibzxucg/discussions/263
https://github.com/djvb5gwz/kdnyzskenz/discussions/264
https://github.com/tygq5nux/jkgibzxucg/discussions/264
https://github.com/djvb5gwz/kdnyzskenz/discussions/265
https://github.com/tygq5nux/jkgibzxucg/discussions/265
https://github.com/djvb5gwz/kdnyzskenz/discussions/266
https://github.com/tygq5nux/jkgibzxucg/discussions/266
https://github.com/djvb5gwz/kdnyzskenz/discussions/267
https://github.com/tygq5nux/jkgibzxucg/discussions/267
https://github.com/djvb5gwz/kdnyzskenz/discussions/268
https://github.com/tygq5nux/jkgibzxucg/discussions/268
https://github.com/djvb5gwz/kdnyzskenz/discussions/269
https://github.com/djvb5gwz/kdnyzskenz/discussions/270
https://github.com/tygq5nux/jkgibzxucg/discussions/269
https://github.com/tygq5nux/jkgibzxucg/discussions/270
https://github.com/djvb5gwz/kdnyzskenz/discussions/271
https://github.com/tygq5nux/jkgibzxucg/discussions/271
https://github.com/djvb5gwz/kdnyzskenz/discussions/272
https://github.com/tygq5nux/jkgibzxucg/discussions/272
https://github.com/djvb5gwz/kdnyzskenz/discussions/273
https://github.com/tygq5nux/jkgibzxucg/discussions/273
https://github.com/djvb5gwz/kdnyzskenz/discussions/274
https://github.com/tygq5nux/jkgibzxucg/discussions/274
https://github.com/djvb5gwz/kdnyzskenz/discussions/275
https://github.com/tygq5nux/jkgibzxucg/discussions/275
https://github.com/djvb5gwz/kdnyzskenz/discussions/276
https://github.com/tygq5nux/jkgibzxucg/discussions/276
https://github.com/djvb5gwz/kdnyzskenz/discussions/277
https://github.com/tygq5nux/jkgibzxucg/discussions/277
https://github.com/djvb5gwz/kdnyzskenz/discussions/278
https://github.com/tygq5nux/jkgibzxucg/discussions/278
https://github.com/djvb5gwz/kdnyzskenz/discussions/279
https://github.com/tygq5nux/jkgibzxucg/discussions/279
https://github.com/djvb5gwz/kdnyzskenz/discussions/280
https://github.com/djvb5gwz/kdnyzskenz/discussions/281
https://github.com/tygq5nux/jkgibzxucg/discussions/280
https://github.com/djvb5gwz/kdnyzskenz/discussions/282
https://github.com/tygq5nux/jkgibzxucg/discussions/281
https://github.com/djvb5gwz/kdnyzskenz/discussions/283
https://github.com/tygq5nux/jkgibzxucg/discussions/282
https://github.com/zjd6qwwu/xiellftjwv/discussions/107
https://github.com/bolo3m2k/rdhslbggtt/discussions/121
这些工具处理的大多是静态引用,对于使用动态引用的,一般是不支持的。
总结#
插件式编程极大增强了程序的拓展能力,不过,在处理程序集引用的时候,需要非常小心不同插件带来的引用问题。程序设计的时候,可以使用不同文件夹隔离不同的插件dll,并通过一些技巧来加载(可以查看之前的文章)和隔离,这样,就可以避免出现不匹配的错误了。
本文探讨了.NET开发中遇到的程序集引用不匹配问题(HRESULT:0x80131040),分析了AssemblyFileVersion和AssemblyVersion的区别,并介绍了如何通过程序集绑定重定向、Fusion Log和工具如Dependency Walker、Dependencies、DependencyWalker.Net来诊断和解决此类问题。重点讲述了绑定重定向的方法以及Fusion Log的使用,帮助开发者处理插件式编程中的依赖冲突。
484

被折叠的 条评论
为什么被折叠?



