编译器忽略程序集的运行时重定向

时间:2019-04-16 14:21:00

标签: c# dll version .net-assembly assembly-binding-redirect

我使用的DLL有点奇怪的情况。每次尝试编译解决方案时,都会显示错误import matplotlib.pyplot as plt plt.figure() plt.plot([1,2,3,4], label="up") plt.plot([1,2,3,2.5], label="down", linewidth=4, alpha=.5) plt.legend() plt.show() CS 1705)。

就目前而言,该错误实际上是正确的,并且是有道理的。我引用的程序集AssemblyJoe .. with identity ..,Version=16.0 uses AssemblyMatthew, Version=16.0 which has a higher version than the referenced AssemblyMatthew, Version=15.0(在我的示例中为Matthew)的版本为15。 AssemblyMatthewJoe)查找版本16,该项目未在我的项目中引用。

但是,我编辑了AssemblyJoe,将App.config的版本16重定向到了15,这在运行时上可以正常使用。 它在编译时不起作用,因为Matthew实际上想要的版本16不存在。

现在到了奇怪的部分:我确实有大会Joe的第15版。如果将版本15替换为版本16(请注意,我仅替换DLL),则一切正常。我可以编译(重建),但是遇到运行时错误(切换版本的最初原因)。编译后,我将版本16替换为版本15-现在与以前相同,只是现在可以进行编译。几分钟后,我必须重复一次,因为旧错误(Matthew)再次弹出。

我该如何解决?我认为没有办法在编译时重定向程序集。

TL; DR 程序集的重定向在运行时有效,但由于编译器正在寻找未重定向的版本,所以我无法进行编译。

0 个答案:

没有答案