.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重定向一起,这似乎解决了

.NET 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绑定重定向

程序集重定向-堆栈溢出