'Assembly uses xxx which has a higher version'与'Could not load file or assembly'



我有一个.NET应用程序,它有许多引用。其中许多引用都有自己的依赖项。

换句话说,有一个依赖于应用程序B的应用程序A,而应用程序又引用汇编C。还有一种依赖D依赖E

所以,如果我想使用不同版本的C.我只是在我的A .csproj中引用了那个不同的版本。我显然得到了Could not load file or assembly... The located assembly's manifest definition does not match the assembly reference的运行时异常.我通过使用BindingRedirect轻松解决了这个问题。

但是,如果我尝试使用不同版本的E,反而会收到一个编译错误,说'Assembly uses xxx which has a higher version of yyy。并且该编译错误无法通过运行时指令 bindingRedirect 解决。

"

B"和"D"都是强名称程序集。它们的构建方式之间没有明显的差异。

为什么在一种情况下我收到运行时异常(可通过bindingRedirect解决)和另一种情况下的编译错误?

我已经使用测试项目进行了一些实验,并找到了问题的原因。

最初的问题是有一个项目A依赖于:

B using C
D using E

我能够更新(降级)C并且仍然使用构建A,而我不能对E做同样的事情。

我在尝试构建项目时遇到错误Assembly uses E which has a higher version of yyy

事实证明,当无法使用该特定版本的E构建D时,就会发生错误,例如,其中一个接口发生了更改。

相关内容

最新更新