.NET DLL绑定问题
本文关键字:问题 绑定 DLL NET | 更新日期: 2023-09-27 18:27:37
我的项目中有一个程序集,我在整个项目中都在使用,没有任何问题。然而,有一个类在尝试使用DLL时抛出错误。
"无法加载文件或程序集XXX或其依赖项之一找到的程序集的清单定义与程序集不匹配参考"
我的DLL版本是1.0.0.1,但这个类似乎在寻找1.0.0.0。我检查了所有地方,在任何地方都找不到1.0.0.0的引用。
我运行fuslogvw查看冲突发生的位置,看起来像:
=== Pre-bind state information ===
LOG: DisplayName = XXXX, Version=1.0.0.0, Culture=neutral, PublicKeyToken=dcd25968a59ae23f
(Fully-specified)
LOG: Appbase = XXXX
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = XXXX
Calling assembly : EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089.
为什么EntityFramework试图调用我的DLL,为什么要寻找更低的版本。我可以在某个地方做一个DLL重定向来解决这个问题吗?
感谢
编辑经过深入调查,似乎有一个额外的EF包(版本号低于当前版本)。我卸载了所有软件包,还不得不手动从软件包文件夹中删除它们,并重新安装了最新的软件包。与DLL重定向一起,这似乎解决了
即使它在寻找较旧的版本,您仍然可以重定向到具有以下配置的较新程序集版本。EF本来是用旧版本编译的,所以它正在尝试加载
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="myAssembly"
publicKeyToken="32ab4ba45e0a69a1"
culture="neutral" />
<bindingRedirect oldVersion="1.0.0.0"
newVersion="2.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
检查以下链接:
MSDN绑定重定向
程序集重定向-堆栈溢出