我有以下问题:
我在一个解决方案中有两个项目,例如Core.prj
和Extension.prj
。
现在,Core.prj
引用名为profile.dll
(v1)的dll,Extension.prj
引用具有相同名称和相同名称空间但不同版本profile.dll
(v2)的dll。
Extension.prj
也引用Core.prj
项目
Core.prj
有一个源文件,例如A.cs
,其中定义了一些虚拟方法。 Extension.prj
有一个源文件,例如B.cs
,其中有一些方法会覆盖A.cs
中Core.prj
中定义的虚拟方法。
我的想法是构建并运行Extension.prj
并从A.cs
中的覆盖方法调用B.cs
中的虚拟方法。现在,B.cs
中的方法将使用profile.dll
(v2)中的类型,A.cs
中的方法将使用来自profile.dll
(v1)的类型,但这是不可能的,因为虚拟A.cs
中的方法使用profile.dll
(v2)中的类型而不是profile.dll
(v1)中的类型。
这个想法是从exe和dll引用不同版本的dll,具有相同的名称和命名空间,无论如何都可行吗?
答案 0 :(得分:1)
我认为在这种情况下你可以使用extern alias
指令。
来自MSDN:
要引用具有相同完全限定类型名称的两个程序集, 必须在命令提示符下指定别名,如下所示:
/r:GridV1=grid.dll
/r:GridV2=grid20.dll
这将创建外部别名GridV1和GridV2。要使用这些 程序中的别名,使用extern引用它们 关键词。例如:
extern别名GridV1;
extern别名GridV2;