如果我有一个引用库(Lib1)的应用程序(App)本身引用另一个库(Lib2),当App引用Lib1时,它也会复制Lib2 dll并正常工作。
如果我还将另一个App的引用添加到另一个不同的库,但名称与Lib2(Lib2bis)相同,则Lib1将尝试使用Lib2bis而不是Lib2中的类型(因为Lib2文件,我相信会被覆盖)通过Lib2bis文件(命名相同)。
由于从App到Lib2的引用是间接的,我不知道Lib2bis与Lib2发生冲突,直到执行会导致运行时错误。
有没有办法防止/解决这个问题(除了重命名库...)(理想情况下,不使用别名,但我也有兴趣了解别名解决方案)。
答案 0 :(得分:1)
您需要assembly alias。
为程序集设置别名(在我的示例中为sanford
):
在代码中:
extern alias sanford;
using System;
...
event EventHandler<sanford::Sanford.StateMachineToolkit.Data> TransitionCompleted;
此外,您需要重命名一个dll文件。