程序集名称与外部依赖项冲突

时间:2015-09-22 09:30:35

标签: c# .net msbuild

如果我有一个引用库(Lib1)的应用程序(App)本身引用另一个库(Lib2),当App引用Lib1时,它也会复制Lib2 dll并正常工作。

如果我还将另一个App的引用添加到另一个不同的库,但名称与Lib2(Lib2bis)相同,则Lib1将尝试使用Lib2bis而不是Lib2中的类型(因为Lib2文件,我相信会被覆盖)通过Lib2bis文件(命名相同)。

由于从App到Lib2的引用是间接的,我不知道Lib2bis与Lib2发生冲突,直到执行会导致运行时错误。

有没有办法防止/解决这个问题(除了重命名库...)(理想情况下,不使用别名,但我也有兴趣了解别名解决方案)。

1 个答案:

答案 0 :(得分:1)

您需要assembly alias

为程序集设置别名(在我的示例中为sanford):

enter image description here

在代码中:

extern alias sanford;
using System;
...

event EventHandler<sanford::Sanford.StateMachineToolkit.Data> TransitionCompleted;

此外,您需要重命名一个dll文件。