程序集名称在外部依赖项上发生冲突
Assembly names conflict on external dependencies
如果我有一个应用程序 (App) 引用一个库 (Lib1),而该库本身引用另一个库 (Lib2),当 App 引用 Lib1 时,它也会复制 Lib2 dll 并正常工作。
如果我还将对 App 的另一个引用添加到另一个不同的库,但名称与 Lib2 (Lib2bis) 相同,则 Lib1 将尝试使用 Lib2bis 中的类型而不是 Lib2(我相信作为 Lib2 文件,被 Lib2bis 文件(同名)覆盖。
由于App对Lib2的引用是间接的,所以直到执行时才知道Lib2bis与Lib2冲突,会导致运行时错误
有什么方法可以解决 prevent/resolve 这个问题(除了重命名库...)(理想情况下,不使用别名,但我也有兴趣了解别名解决方案(如果有的话))。
你需要assembly alias.
为您的程序集设置别名(在我的例子中是sanford
):
在代码中:
extern alias sanford;
using System;
...
event EventHandler<sanford::Sanford.StateMachineToolkit.Data> TransitionCompleted;
此外,您需要重命名一个 dll 文件。
如果我有一个应用程序 (App) 引用一个库 (Lib1),而该库本身引用另一个库 (Lib2),当 App 引用 Lib1 时,它也会复制 Lib2 dll 并正常工作。
如果我还将对 App 的另一个引用添加到另一个不同的库,但名称与 Lib2 (Lib2bis) 相同,则 Lib1 将尝试使用 Lib2bis 中的类型而不是 Lib2(我相信作为 Lib2 文件,被 Lib2bis 文件(同名)覆盖。
由于App对Lib2的引用是间接的,所以直到执行时才知道Lib2bis与Lib2冲突,会导致运行时错误
有什么方法可以解决 prevent/resolve 这个问题(除了重命名库...)(理想情况下,不使用别名,但我也有兴趣了解别名解决方案(如果有的话))。
你需要assembly alias.
为您的程序集设置别名(在我的例子中是sanford
):
在代码中:
extern alias sanford;
using System;
...
event EventHandler<sanford::Sanford.StateMachineToolkit.Data> TransitionCompleted;
此外,您需要重命名一个 dll 文件。